From e4534449be1b84080da9069fd40e2c0f09a91daa Mon Sep 17 00:00:00 2001 From: Jeff Prestes Date: Thu, 21 Nov 2024 16:21:58 -0300 Subject: [PATCH] feat: add project data --- cache/solidity-files-cache.json | 2 +- cache/test-failures | 1 + script/CarbonProjectDeploy.s.sol | 29 ++++++++++++--- src/CarbonProject.sol | 50 ++++++++++++++++++++++++-- test/CarbonProject.t.sol | 62 +++++++++++++++++++++++++++++++- 5 files changed, 136 insertions(+), 8 deletions(-) create mode 100644 cache/test-failures diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 2e86ea7..eb3d88b 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1731012154869,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.25":{"path":"Base.sol\\CommonBase.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"ScriptBase":{"0.8.25":{"path":"Base.sol\\ScriptBase.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"TestBase":{"0.8.25":{"path":"Base.sol\\TestBase.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1731012154869,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.25":{"path":"StdAssertions.sol\\StdAssertions.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1731012154869,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.25":{"path":"StdChains.sol\\StdChains.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1731012154869,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.25":{"path":"StdCheats.sol\\StdCheats.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"StdCheatsSafe":{"0.8.25":{"path":"StdCheats.sol\\StdCheatsSafe.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1731012154869,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.25":{"path":"StdError.sol\\stdError.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1731012154869,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.25":{"path":"StdInvariant.sol\\StdInvariant.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1731012154869,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.25":{"path":"StdJson.sol\\stdJson.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1731012154869,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.25":{"path":"StdMath.sol\\stdMath.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1731012154869,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.25":{"path":"StdStorage.sol\\stdStorage.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"stdStorageSafe":{"0.8.25":{"path":"StdStorage.sol\\stdStorageSafe.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1731012154869,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.25":{"path":"StdStyle.sol\\StdStyle.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1731012154869,"contentHash":"4bce85a4c60f2c073e651ee8140bcb4d","sourceName":"lib/forge-std/src/StdToml.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.25":{"path":"StdToml.sol\\stdToml.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1731012154869,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.25":{"path":"StdUtils.sol\\StdUtils.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1731012154869,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.25":{"path":"Test.sol\\Test.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1731012154885,"contentHash":"98fa69a5c59caa2c00679246865de0ec","sourceName":"lib/forge-std/src/Vm.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.25":{"path":"Vm.sol\\Vm.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"VmSafe":{"0.8.25":{"path":"Vm.sol\\VmSafe.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1731012154886,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.25":{"path":"console.sol\\console.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1731012154886,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1731012154886,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.25":{"path":"IERC165.sol\\IERC165.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1731012154886,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.25":{"path":"IERC20.sol\\IERC20.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1731012154886,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.25":{"path":"IERC721.sol\\IERC721.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"IERC721Enumerable":{"0.8.25":{"path":"IERC721.sol\\IERC721Enumerable.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"IERC721Metadata":{"0.8.25":{"path":"IERC721.sol\\IERC721Metadata.json","build_id":"963660799c600ade75a6fac9900d0b82"}},"IERC721TokenReceiver":{"0.8.25":{"path":"IERC721.sol\\IERC721TokenReceiver.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1731012154886,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.25":{"path":"IMulticall3.sol\\IMulticall3.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1731012154886,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.25":{"path":"MockERC20.sol\\MockERC20.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1731012154886,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.25":{"path":"MockERC721.sol\\MockERC721.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1731012154886,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.25":{"path":"safeconsole.sol\\safeconsole.json","build_id":"963660799c600ade75a6fac9900d0b82"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1731013120049,"contentHash":"267d92fe4de67b1bdb3302c08f387dbf","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC1155Errors.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}},"IERC20Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC20Errors.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}},"IERC721Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC721Errors.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol":{"lastModificationDate":1731013120112,"contentHash":"7c7e5fac496b72e79ede7720a44a887c","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC1155":{"0.8.25":{"path":"ERC1155.sol\\ERC1155.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"lastModificationDate":1731013120112,"contentHash":"1c608119423d96df908c14227957bd75","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155":{"0.8.25":{"path":"IERC1155.sol\\IERC1155.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"lastModificationDate":1731013120112,"contentHash":"a1c249dfb5f349be0b4fc85e635dfd59","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Receiver":{"0.8.25":{"path":"IERC1155Receiver.sol\\IERC1155Receiver.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"lastModificationDate":1731013120127,"contentHash":"f8867afd172ace7ffa75d3752d785770","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155MetadataURI":{"0.8.25":{"path":"IERC1155MetadataURI.sol\\IERC1155MetadataURI.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol":{"lastModificationDate":1731013120127,"contentHash":"346f1d25727e87df31335bbbc03a6c20","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC1155Utils":{"0.8.25":{"path":"ERC1155Utils.sol\\ERC1155Utils.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"lastModificationDate":1731013120143,"contentHash":"d7ecd50ca59f27485f37e919aeb0392a","sourceName":"lib/openzeppelin-contracts/contracts/utils/Arrays.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"Arrays":{"0.8.25":{"path":"Arrays.sol\\Arrays.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"lastModificationDate":1731013120143,"contentHash":"0e57405a6f979853cbfeb0df3546c3a3","sourceName":"lib/openzeppelin-contracts/contracts/utils/Comparators.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Comparators":{"0.8.25":{"path":"Comparators.sol\\Comparators.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1731013120143,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.25":{"path":"Context.sol\\Context.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"lastModificationDate":1731013120143,"contentHash":"2133dc13536b4a6a98131e431fac59e1","sourceName":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Panic":{"0.8.25":{"path":"Panic.sol\\Panic.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"lastModificationDate":1731013120143,"contentHash":"b1b4d2a2542c75ed7ce12036009f3617","sourceName":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SlotDerivation":{"0.8.25":{"path":"SlotDerivation.sol\\SlotDerivation.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"lastModificationDate":1731013120143,"contentHash":"e656d64c4ce918f3d13030b91c935134","sourceName":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"StorageSlot":{"0.8.25":{"path":"StorageSlot.sol\\StorageSlot.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1731013120158,"contentHash":"7c03c1e37c3dc24eafb76dc2b8a5c3a6","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.25":{"path":"ERC165.sol\\ERC165.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1731013120158,"contentHash":"bf0119eb2a570f219729ff38b6cd1df8","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.25":{"path":"introspection\\IERC165.sol\\IERC165.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1731013120739,"contentHash":"2b2665ae9bdb1af440658741a77fe213","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.25":{"path":"Math.sol\\Math.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"lastModificationDate":1731013120158,"contentHash":"2adca1150f58fc6f3d1f0a0f22ee7cca","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SafeCast":{"0.8.25":{"path":"SafeCast.sol\\SafeCast.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"src/CarbonProject.sol":{"lastModificationDate":1731013999753,"contentHash":"5d2f3378ce217bb94de21836b662896b","sourceName":"src/CarbonProject.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts\\contracts/token/ERC1155/ERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"=0.8.25","artifacts":{"CarbonProject":{"0.8.25":{"path":"CarbonProject.sol\\CarbonProject.json","build_id":"c72c5b87da0cadf8585675ab59e26d7b"}}},"seenByCompiler":true},"src/Counter.sol":{"lastModificationDate":1731012517493,"contentHash":"a98cccb13d34a983b30e982ead03a21a","sourceName":"src/Counter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.25","artifacts":{"Counter":{"0.8.25":{"path":"Counter.sol\\Counter.json","build_id":"317d7678f7dc5988b64d393da00141fe"}}},"seenByCompiler":true},"test/CarbonProject.t.sol":{"lastModificationDate":1731014240074,"contentHash":"6bd7973607636fc9e9fb3b91224ec043","sourceName":"test/CarbonProject.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src\\Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts\\contracts/token/ERC1155/ERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","src\\CarbonProject.sol"],"versionRequirement":"=0.8.25","artifacts":{"CarbonProjectTest":{"0.8.25":{"path":"CarbonProject.t.sol\\CarbonProjectTest.json","build_id":"4272f9dc91907905cebab5b0bbc11c03"}}},"seenByCompiler":true},"test/Counter.t.sol":{"lastModificationDate":1731012515297,"contentHash":"c6a1d953a307c182df4128d9ec135df8","sourceName":"test/Counter.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src\\Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src\\Counter.sol"],"versionRequirement":"=0.8.25","artifacts":{"CounterTest":{"0.8.25":{"path":"Counter.t.sol\\CounterTest.json","build_id":"317d7678f7dc5988b64d393da00141fe"}}},"seenByCompiler":true}},"builds":["317d7678f7dc5988b64d393da00141fe","4272f9dc91907905cebab5b0bbc11c03","963660799c600ade75a6fac9900d0b82","c72c5b87da0cadf8585675ab59e26d7b"]} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1731012154869,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.25":{"path":"Base.sol\\CommonBase.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"ScriptBase":{"0.8.25":{"path":"Base.sol\\ScriptBase.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"TestBase":{"0.8.25":{"path":"Base.sol\\TestBase.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1731012154869,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.25":{"path":"StdAssertions.sol\\StdAssertions.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1731012154869,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.25":{"path":"StdChains.sol\\StdChains.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1731012154869,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.25":{"path":"StdCheats.sol\\StdCheats.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"StdCheatsSafe":{"0.8.25":{"path":"StdCheats.sol\\StdCheatsSafe.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1731012154869,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.25":{"path":"StdError.sol\\stdError.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1731012154869,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.25":{"path":"StdInvariant.sol\\StdInvariant.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1731012154869,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.25":{"path":"StdJson.sol\\stdJson.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1731012154869,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.25":{"path":"StdMath.sol\\stdMath.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1731012154869,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.25":{"path":"StdStorage.sol\\stdStorage.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"stdStorageSafe":{"0.8.25":{"path":"StdStorage.sol\\stdStorageSafe.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1731012154869,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.25":{"path":"StdStyle.sol\\StdStyle.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1731012154869,"contentHash":"4bce85a4c60f2c073e651ee8140bcb4d","sourceName":"lib/forge-std/src/StdToml.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.25":{"path":"StdToml.sol\\stdToml.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1731012154869,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.25":{"path":"StdUtils.sol\\StdUtils.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1731012154869,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.25":{"path":"Test.sol\\Test.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1731012154885,"contentHash":"98fa69a5c59caa2c00679246865de0ec","sourceName":"lib/forge-std/src/Vm.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.25":{"path":"Vm.sol\\Vm.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"VmSafe":{"0.8.25":{"path":"Vm.sol\\VmSafe.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1731012154886,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.25":{"path":"console.sol\\console.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1731012154886,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1731012154886,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.25":{"path":"IERC165.sol\\IERC165.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1731012154886,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.25":{"path":"IERC20.sol\\IERC20.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1731012154886,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.25":{"path":"IERC721.sol\\IERC721.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"IERC721Enumerable":{"0.8.25":{"path":"IERC721.sol\\IERC721Enumerable.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"IERC721Metadata":{"0.8.25":{"path":"IERC721.sol\\IERC721Metadata.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"IERC721TokenReceiver":{"0.8.25":{"path":"IERC721.sol\\IERC721TokenReceiver.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1731012154886,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.25":{"path":"IMulticall3.sol\\IMulticall3.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1731012154886,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.25":{"path":"MockERC20.sol\\MockERC20.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1731012154886,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.25":{"path":"MockERC721.sol\\MockERC721.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1731012154886,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.25":{"path":"safeconsole.sol\\safeconsole.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"lastModificationDate":1731013120001,"contentHash":"d3c790edc9ccf808a17c5a6cd13614fd","sourceName":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Context.sol"],"versionRequirement":"^0.8.20","artifacts":{"Ownable":{"0.8.25":{"path":"Ownable.sol\\Ownable.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"lastModificationDate":1731013120049,"contentHash":"267d92fe4de67b1bdb3302c08f387dbf","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC1155Errors.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"IERC20Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC20Errors.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}},"IERC721Errors":{"0.8.25":{"path":"draft-IERC6093.sol\\IERC721Errors.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol":{"lastModificationDate":1731013120112,"contentHash":"7c7e5fac496b72e79ede7720a44a887c","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC1155":{"0.8.25":{"path":"ERC1155.sol\\ERC1155.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"lastModificationDate":1731013120112,"contentHash":"1c608119423d96df908c14227957bd75","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155":{"0.8.25":{"path":"IERC1155.sol\\IERC1155.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol":{"lastModificationDate":1731013120112,"contentHash":"a1c249dfb5f349be0b4fc85e635dfd59","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155Receiver":{"0.8.25":{"path":"IERC1155Receiver.sol\\IERC1155Receiver.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"lastModificationDate":1731013120127,"contentHash":"f8867afd172ace7ffa75d3752d785770","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"IERC1155MetadataURI":{"0.8.25":{"path":"IERC1155MetadataURI.sol\\IERC1155MetadataURI.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol":{"lastModificationDate":1731013120127,"contentHash":"346f1d25727e87df31335bbbc03a6c20","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC1155Utils":{"0.8.25":{"path":"ERC1155Utils.sol\\ERC1155Utils.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"lastModificationDate":1731013120143,"contentHash":"d7ecd50ca59f27485f37e919aeb0392a","sourceName":"lib/openzeppelin-contracts/contracts/utils/Arrays.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"Arrays":{"0.8.25":{"path":"Arrays.sol\\Arrays.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"lastModificationDate":1731013120143,"contentHash":"0e57405a6f979853cbfeb0df3546c3a3","sourceName":"lib/openzeppelin-contracts/contracts/utils/Comparators.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Comparators":{"0.8.25":{"path":"Comparators.sol\\Comparators.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1731013120143,"contentHash":"67bfbc07588eb8683b3fd8f6f909563e","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Context":{"0.8.25":{"path":"Context.sol\\Context.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"lastModificationDate":1731013120143,"contentHash":"2133dc13536b4a6a98131e431fac59e1","sourceName":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"Panic":{"0.8.25":{"path":"Panic.sol\\Panic.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"lastModificationDate":1731013120143,"contentHash":"b1b4d2a2542c75ed7ce12036009f3617","sourceName":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SlotDerivation":{"0.8.25":{"path":"SlotDerivation.sol\\SlotDerivation.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"lastModificationDate":1731013120143,"contentHash":"e656d64c4ce918f3d13030b91c935134","sourceName":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"StorageSlot":{"0.8.25":{"path":"StorageSlot.sol\\StorageSlot.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"lastModificationDate":1731013120158,"contentHash":"7c03c1e37c3dc24eafb76dc2b8a5c3a6","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol"],"versionRequirement":"^0.8.20","artifacts":{"ERC165":{"0.8.25":{"path":"ERC165.sol\\ERC165.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"lastModificationDate":1731013120158,"contentHash":"bf0119eb2a570f219729ff38b6cd1df8","sourceName":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC165":{"0.8.25":{"path":"introspection\\IERC165.sol\\IERC165.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"lastModificationDate":1731013120739,"contentHash":"2b2665ae9bdb1af440658741a77fe213","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"^0.8.20","artifacts":{"Math":{"0.8.25":{"path":"Math.sol\\Math.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"lastModificationDate":1731013120158,"contentHash":"2adca1150f58fc6f3d1f0a0f22ee7cca","sourceName":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.20","artifacts":{"SafeCast":{"0.8.25":{"path":"SafeCast.sol\\SafeCast.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"src/CarbonProject.sol":{"lastModificationDate":1732214086427,"contentHash":"61b16c6c841000c605ab317bb03633ca","sourceName":"src/CarbonProject.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts\\contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts\\contracts/token/ERC1155/ERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"],"versionRequirement":"=0.8.25","artifacts":{"CarbonProject":{"0.8.25":{"path":"CarbonProject.sol\\CarbonProject.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"src/Counter.sol":{"lastModificationDate":1731012517493,"contentHash":"a98cccb13d34a983b30e982ead03a21a","sourceName":"src/Counter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.25","artifacts":{"Counter":{"0.8.25":{"path":"Counter.sol\\Counter.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true},"test/CarbonProject.t.sol":{"lastModificationDate":1732216096151,"contentHash":"a9770b46bbb2db1a5b1376d38236166e","sourceName":"test/CarbonProject.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src\\Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","lib/openzeppelin-contracts\\contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","lib/openzeppelin-contracts\\contracts/token/ERC1155/ERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sol","lib/openzeppelin-contracts/contracts/utils/Arrays.sol","lib/openzeppelin-contracts/contracts/utils/Comparators.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/Panic.sol","lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","lib/openzeppelin-contracts/contracts/utils/math/Math.sol","lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","src\\CarbonProject.sol"],"versionRequirement":"=0.8.25","artifacts":{"CarbonProjectTest":{"0.8.25":{"path":"CarbonProject.t.sol\\CarbonProjectTest.json","build_id":"5b31bf42de5fe6ce3037726c288a3ba5"}}},"seenByCompiler":true},"test/Counter.t.sol":{"lastModificationDate":1731012515297,"contentHash":"c6a1d953a307c182df4128d9ec135df8","sourceName":"test/Counter.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src\\Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src\\Counter.sol"],"versionRequirement":"=0.8.25","artifacts":{"CounterTest":{"0.8.25":{"path":"Counter.t.sol\\CounterTest.json","build_id":"86ce9df6ee452e64645b6d43bd667223"}}},"seenByCompiler":true}},"builds":["5b31bf42de5fe6ce3037726c288a3ba5","86ce9df6ee452e64645b6d43bd667223"]} \ No newline at end of file diff --git a/cache/test-failures b/cache/test-failures new file mode 100644 index 0000000..93ba5c6 --- /dev/null +++ b/cache/test-failures @@ -0,0 +1 @@ +test_SetDataTwice \ No newline at end of file diff --git a/script/CarbonProjectDeploy.s.sol b/script/CarbonProjectDeploy.s.sol index d5291aa..5247037 100644 --- a/script/CarbonProjectDeploy.s.sol +++ b/script/CarbonProjectDeploy.s.sol @@ -11,9 +11,30 @@ contract CarbonProjectDeployScript is Script { function run() public { vm.startBroadcast(); - - cp = new CarbonProject("https://www.neocarbon.com.br/br/registro/projeto?id={id}"); - + address owner = address(0x7aC722a69CDb106127f1f2cC86761B28176E5379); + cp = new CarbonProject("https://www.neocarbon.com.br/br/registro/projeto?id={id}", owner); vm.stopBroadcast(); + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + bool executed = cp.setProjectData( + 4561, + "MTALT20230003", + "AGROPECUARIA J L LTDA", + "Unidade de Carbono Florestal - ARR + REDD", + "Alto Taquari/MT/BRA", + "Registrado", + 1691971200, + 1723593600, + 315360000, + "2102.83 hectares"); + require(executed, "Failed to set project data"); + } -} \ No newline at end of file + +} + +/* +forge script script/CarbonProjectDeployScript.s.sol:CarbonProjectDeployScript --rpc-url $RPC_POLYGON_MAINNET --broadcast --verify --chain polygon --etherscan-api-key $POLYGONSCAN_API_KEY -vvvv +forge script script/CarbonProjectDeployScript.s.sol:CarbonProjectDeployScript --rpc-url $RPC_POLYGON_TEST --broadcast --verify --chain polygon --etherscan-api-key $POLYGONSCAN_API_KEY -vvvv +forge script script/CarbonProjectDeployScript.s.sol:CarbonProjectDeployScript --rpc-url %RPC_POLYGON_TEST% --broadcast --verify --chain polygon --etherscan-api-key %POLYGONSCAN_API_KEY% -vvvv +*/ \ No newline at end of file diff --git a/src/CarbonProject.sol b/src/CarbonProject.sol index f3f4eef..7432ef9 100644 --- a/src/CarbonProject.sol +++ b/src/CarbonProject.sol @@ -2,9 +2,11 @@ pragma solidity 0.8.25; import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; -contract CarbonProject is ERC1155 { +contract CarbonProject is ERC1155, Ownable { + bool public _projectDataSet; uint256 public _id; string public _nameNumber; string public _proposer; @@ -16,8 +18,52 @@ contract CarbonProject is ERC1155 { uint256 public _period; string public _areaSize; - constructor(string memory uri_) ERC1155(uri_) { + constructor(string memory uri_, address owner_) ERC1155(uri_) Ownable(owner_) { _setURI(uri_); + _projectDataSet = false; + } + + function setProjectData( + uint256 id, + string memory nameNumber, + string memory proposer, + string memory activity, + string memory location, + string memory status, + uint256 startDate, + uint256 endDate, + uint256 period, + string memory areaSize + ) public onlyOwner returns (bool) { + require(!_projectDataSet, "Project data already set"); + _id = id; + _nameNumber = nameNumber; + _proposer = proposer; + _activity = activity; + _location = location; + _status = status; + _startDate = startDate; + _endDate = endDate; + _period = period; + _areaSize = areaSize; + _projectDataSet = true; + return true; + } + + function getProjectData() public view returns ( + uint256 id, + string memory nameNumber, + string memory proposer, + string memory activity, + string memory location, + string memory status, + uint256 startDate, + uint256 endDate, + uint256 period, + string memory areaSize, + bool projectDataSet + ) { + return (_id, _nameNumber, _proposer, _activity, _location, _status, _startDate, _endDate, _period, _areaSize, projectDataSet); } } \ No newline at end of file diff --git a/test/CarbonProject.t.sol b/test/CarbonProject.t.sol index 900173f..a6b9801 100644 --- a/test/CarbonProject.t.sol +++ b/test/CarbonProject.t.sol @@ -6,16 +6,76 @@ import {Test, console} from "forge-std/Test.sol"; contract CarbonProjectTest is Test { string public uri = "https://www.neocarbon.com.br/br/registro/projeto?id={id}"; + address public owner = address(0x123); CarbonProject public carbonProject; function setUp() public { - carbonProject = new CarbonProject(uri); + carbonProject = new CarbonProject(uri, owner); } function test_CarbonProject() public view { console.log("CarbonProject: ", address(carbonProject)); console.log("URI: ", carbonProject.uri(5451)); + console.log("Owner: ", carbonProject.owner()); assertEq(carbonProject.uri(5451), uri); + assertEq(carbonProject.owner(), owner); + } + + function testFail_SetDataNotOwner() public { + setDataTest(); + } + + function test_SetData() public { + vm.prank(owner); + setDataTest(); + (uint256 id, + string memory nameNumber, + string memory proposer, + string memory activity, + string memory location, + string memory status, + uint256 startDate, + uint256 endDate, + uint256 period, + string memory areaSize, + bool projectDataSet) = carbonProject.getProjectData(); + console.log("Project Data: ", projectDataSet); + // assertEq(projectDataSet, true); + assertEq(id, 4561); + assertEq(nameNumber, "MTALT20230003"); + assertEq(proposer, "AGROPECUARIA J L LTDA"); + assertEq(activity, "Unidade de Carbono Florestal - ARR + REDD"); + assertEq(location, "Alto Taquari/MT/BRA"); + assertEq(status, "Registrado"); + assertEq(startDate, 1691971200); + assertEq(endDate, 1723593600); + assertEq(period, 315360000); + assertEq(areaSize, "2102.83 hectares"); + } + + function testFail_SetDataTwice() public { + vm.prank(owner); + setDataTest(); + vm.prank(owner); + setDataTest(); + } + + function setDataTest() public { + bool executed = carbonProject.setProjectData( + 4561, + "MTALT20230003", + "AGROPECUARIA J L LTDA", + "Unidade de Carbono Florestal - ARR + REDD", + "Alto Taquari/MT/BRA", + "Registrado", + 1691971200, + 1723593600, + 315360000, + "2102.83 hectares"); + + console.log("CarbonProject: ", address(carbonProject)); + console.log("Executed setProjectData: ", executed); + assertEq(executed, true); } }