├── .gitignore
├── README.md
├── bot-report.md
├── contracts
├── .env.example
├── .gitignore
├── .gitmodules
├── .prettierrc.js
├── .solhint.json
├── .solhintignore
├── LICENSE.md
├── README.md
├── docs
│ ├── Architecture.md
│ ├── Core.md
│ ├── Introduction.md
│ ├── RegistriesRoles.md
│ └── images
│ │ ├── Sub-account execution flow via console account.png
│ │ ├── Sub-account execution flow via executor plugin.png
│ │ ├── banner.png
│ │ ├── console account execTransaction.png
│ │ ├── console-guard-removal.png
│ │ └── sub-account execTransaction by operators.png
├── foundry.toml
├── interfaces
│ ├── IAddressProviderService.sol
│ ├── IWalletAdapter.sol
│ ├── Types.sol
│ └── external
│ │ ├── IFallbackHandler.sol
│ │ ├── IGnosisMultiSend.sol
│ │ ├── IGnosisProxyFactory.sol
│ │ └── IGnosisSafe.sol
├── lib
│ ├── forge-std
│ │ ├── .github
│ │ │ └── workflows
│ │ │ │ ├── ci.yml
│ │ │ │ └── sync.yml
│ │ ├── .gitignore
│ │ ├── .gitmodules
│ │ ├── LICENSE-APACHE
│ │ ├── LICENSE-MIT
│ │ ├── README.md
│ │ ├── foundry.toml
│ │ ├── lib
│ │ │ └── ds-test
│ │ │ │ ├── .github
│ │ │ │ └── workflows
│ │ │ │ │ └── build.yml
│ │ │ │ ├── .gitignore
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile
│ │ │ │ ├── default.nix
│ │ │ │ ├── demo
│ │ │ │ └── demo.sol
│ │ │ │ ├── package.json
│ │ │ │ └── src
│ │ │ │ ├── test.sol
│ │ │ │ └── test.t.sol
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── Base.sol
│ │ │ ├── Script.sol
│ │ │ ├── StdAssertions.sol
│ │ │ ├── StdChains.sol
│ │ │ ├── StdCheats.sol
│ │ │ ├── StdError.sol
│ │ │ ├── StdInvariant.sol
│ │ │ ├── StdJson.sol
│ │ │ ├── StdMath.sol
│ │ │ ├── StdStorage.sol
│ │ │ ├── StdStyle.sol
│ │ │ ├── StdUtils.sol
│ │ │ ├── Test.sol
│ │ │ ├── Vm.sol
│ │ │ ├── console.sol
│ │ │ ├── console2.sol
│ │ │ ├── interfaces
│ │ │ │ ├── IERC1155.sol
│ │ │ │ ├── IERC165.sol
│ │ │ │ ├── IERC20.sol
│ │ │ │ ├── IERC4626.sol
│ │ │ │ ├── IERC721.sol
│ │ │ │ └── IMulticall3.sol
│ │ │ └── safeconsole.sol
│ │ └── test
│ │ │ ├── StdAssertions.t.sol
│ │ │ ├── StdChains.t.sol
│ │ │ ├── StdCheats.t.sol
│ │ │ ├── StdError.t.sol
│ │ │ ├── StdMath.t.sol
│ │ │ ├── StdStorage.t.sol
│ │ │ ├── StdStyle.t.sol
│ │ │ ├── StdUtils.t.sol
│ │ │ ├── compilation
│ │ │ ├── CompilationScript.sol
│ │ │ ├── CompilationScriptBase.sol
│ │ │ ├── CompilationTest.sol
│ │ │ └── CompilationTestBase.sol
│ │ │ └── fixtures
│ │ │ └── broadcast.log.json
│ ├── openzeppelin-contracts
│ │ ├── .changeset
│ │ │ └── config.json
│ │ ├── .codecov.yml
│ │ ├── .editorconfig
│ │ ├── .eslintrc
│ │ ├── .github
│ │ │ ├── ISSUE_TEMPLATE
│ │ │ │ ├── bug_report.md
│ │ │ │ ├── config.yml
│ │ │ │ └── feature_request.md
│ │ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ │ ├── actions
│ │ │ │ ├── gas-compare
│ │ │ │ │ └── action.yml
│ │ │ │ ├── setup
│ │ │ │ │ └── action.yml
│ │ │ │ └── storage-layout
│ │ │ │ │ └── action.yml
│ │ │ └── workflows
│ │ │ │ ├── actionlint.yml
│ │ │ │ ├── changeset.yml
│ │ │ │ ├── checks.yml
│ │ │ │ ├── docs.yml
│ │ │ │ ├── formal-verification.yml
│ │ │ │ ├── release-cycle.yml
│ │ │ │ └── upgradeable.yml
│ │ ├── .gitignore
│ │ ├── .gitmodules
│ │ ├── .mocharc.js
│ │ ├── .prettierrc
│ │ ├── .solcover.js
│ │ ├── .solhint.json
│ │ ├── CHANGELOG.md
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── GUIDELINES.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── RELEASING.md
│ │ ├── SECURITY.md
│ │ ├── audits
│ │ │ ├── 2017-03.md
│ │ │ ├── 2018-10.pdf
│ │ │ ├── 2022-10-Checkpoints.pdf
│ │ │ ├── 2022-10-ERC4626.pdf
│ │ │ ├── 2023-05-v4.9.pdf
│ │ │ └── README.md
│ │ ├── certora
│ │ │ ├── .gitignore
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── diff
│ │ │ │ └── token_ERC721_ERC721.sol.patch
│ │ │ ├── harnesses
│ │ │ │ ├── AccessControlDefaultAdminRulesHarness.sol
│ │ │ │ ├── AccessControlHarness.sol
│ │ │ │ ├── DoubleEndedQueueHarness.sol
│ │ │ │ ├── ERC20FlashMintHarness.sol
│ │ │ │ ├── ERC20PermitHarness.sol
│ │ │ │ ├── ERC20WrapperHarness.sol
│ │ │ │ ├── ERC3156FlashBorrowerHarness.sol
│ │ │ │ ├── ERC721Harness.sol
│ │ │ │ ├── ERC721ReceiverHarness.sol
│ │ │ │ ├── EnumerableMapHarness.sol
│ │ │ │ ├── EnumerableSetHarness.sol
│ │ │ │ ├── InitializableHarness.sol
│ │ │ │ ├── Ownable2StepHarness.sol
│ │ │ │ ├── OwnableHarness.sol
│ │ │ │ ├── PausableHarness.sol
│ │ │ │ └── TimelockControllerHarness.sol
│ │ │ ├── reports
│ │ │ │ ├── 2021-10.pdf
│ │ │ │ ├── 2022-03.pdf
│ │ │ │ └── 2022-05.pdf
│ │ │ ├── run.js
│ │ │ ├── specs.json
│ │ │ └── specs
│ │ │ │ ├── AccessControl.spec
│ │ │ │ ├── AccessControlDefaultAdminRules.spec
│ │ │ │ ├── DoubleEndedQueue.spec
│ │ │ │ ├── ERC20.spec
│ │ │ │ ├── ERC20FlashMint.spec
│ │ │ │ ├── ERC20Wrapper.spec
│ │ │ │ ├── ERC721.spec
│ │ │ │ ├── EnumerableMap.spec
│ │ │ │ ├── EnumerableSet.spec
│ │ │ │ ├── Initializable.spec
│ │ │ │ ├── Ownable.spec
│ │ │ │ ├── Ownable2Step.spec
│ │ │ │ ├── Pausable.spec
│ │ │ │ ├── TimelockController.spec
│ │ │ │ ├── helpers
│ │ │ │ └── helpers.spec
│ │ │ │ └── methods
│ │ │ │ ├── IAccessControl.spec
│ │ │ │ ├── IAccessControlDefaultAdminRules.spec
│ │ │ │ ├── IERC20.spec
│ │ │ │ ├── IERC2612.spec
│ │ │ │ ├── IERC3156.spec
│ │ │ │ ├── IERC5313.spec
│ │ │ │ ├── IERC721.spec
│ │ │ │ ├── IOwnable.spec
│ │ │ │ └── IOwnable2Step.spec
│ │ ├── contracts
│ │ │ ├── access
│ │ │ │ ├── AccessControl.sol
│ │ │ │ ├── AccessControlCrossChain.sol
│ │ │ │ ├── AccessControlDefaultAdminRules.sol
│ │ │ │ ├── AccessControlEnumerable.sol
│ │ │ │ ├── IAccessControl.sol
│ │ │ │ ├── IAccessControlDefaultAdminRules.sol
│ │ │ │ ├── IAccessControlEnumerable.sol
│ │ │ │ ├── Ownable.sol
│ │ │ │ ├── Ownable2Step.sol
│ │ │ │ └── README.adoc
│ │ │ ├── crosschain
│ │ │ │ ├── CrossChainEnabled.sol
│ │ │ │ ├── README.adoc
│ │ │ │ ├── amb
│ │ │ │ │ ├── CrossChainEnabledAMB.sol
│ │ │ │ │ └── LibAMB.sol
│ │ │ │ ├── arbitrum
│ │ │ │ │ ├── CrossChainEnabledArbitrumL1.sol
│ │ │ │ │ ├── CrossChainEnabledArbitrumL2.sol
│ │ │ │ │ ├── LibArbitrumL1.sol
│ │ │ │ │ └── LibArbitrumL2.sol
│ │ │ │ ├── errors.sol
│ │ │ │ ├── optimism
│ │ │ │ │ ├── CrossChainEnabledOptimism.sol
│ │ │ │ │ └── LibOptimism.sol
│ │ │ │ └── polygon
│ │ │ │ │ └── CrossChainEnabledPolygonChild.sol
│ │ │ ├── finance
│ │ │ │ ├── PaymentSplitter.sol
│ │ │ │ ├── README.adoc
│ │ │ │ └── VestingWallet.sol
│ │ │ ├── governance
│ │ │ │ ├── Governor.sol
│ │ │ │ ├── IGovernor.sol
│ │ │ │ ├── README.adoc
│ │ │ │ ├── TimelockController.sol
│ │ │ │ ├── compatibility
│ │ │ │ │ ├── GovernorCompatibilityBravo.sol
│ │ │ │ │ └── IGovernorCompatibilityBravo.sol
│ │ │ │ ├── extensions
│ │ │ │ │ ├── GovernorCountingSimple.sol
│ │ │ │ │ ├── GovernorPreventLateQuorum.sol
│ │ │ │ │ ├── GovernorProposalThreshold.sol
│ │ │ │ │ ├── GovernorSettings.sol
│ │ │ │ │ ├── GovernorTimelockCompound.sol
│ │ │ │ │ ├── GovernorTimelockControl.sol
│ │ │ │ │ ├── GovernorVotes.sol
│ │ │ │ │ ├── GovernorVotesComp.sol
│ │ │ │ │ ├── GovernorVotesQuorumFraction.sol
│ │ │ │ │ └── IGovernorTimelock.sol
│ │ │ │ └── utils
│ │ │ │ │ ├── IVotes.sol
│ │ │ │ │ └── Votes.sol
│ │ │ ├── interfaces
│ │ │ │ ├── IERC1155.sol
│ │ │ │ ├── IERC1155MetadataURI.sol
│ │ │ │ ├── IERC1155Receiver.sol
│ │ │ │ ├── IERC1271.sol
│ │ │ │ ├── IERC1363.sol
│ │ │ │ ├── IERC1363Receiver.sol
│ │ │ │ ├── IERC1363Spender.sol
│ │ │ │ ├── IERC165.sol
│ │ │ │ ├── IERC1820Implementer.sol
│ │ │ │ ├── IERC1820Registry.sol
│ │ │ │ ├── IERC1967.sol
│ │ │ │ ├── IERC20.sol
│ │ │ │ ├── IERC20Metadata.sol
│ │ │ │ ├── IERC2309.sol
│ │ │ │ ├── IERC2612.sol
│ │ │ │ ├── IERC2981.sol
│ │ │ │ ├── IERC3156.sol
│ │ │ │ ├── IERC3156FlashBorrower.sol
│ │ │ │ ├── IERC3156FlashLender.sol
│ │ │ │ ├── IERC4626.sol
│ │ │ │ ├── IERC4906.sol
│ │ │ │ ├── IERC5267.sol
│ │ │ │ ├── IERC5313.sol
│ │ │ │ ├── IERC5805.sol
│ │ │ │ ├── IERC6372.sol
│ │ │ │ ├── IERC721.sol
│ │ │ │ ├── IERC721Enumerable.sol
│ │ │ │ ├── IERC721Metadata.sol
│ │ │ │ ├── IERC721Receiver.sol
│ │ │ │ ├── IERC777.sol
│ │ │ │ ├── IERC777Recipient.sol
│ │ │ │ ├── IERC777Sender.sol
│ │ │ │ ├── README.adoc
│ │ │ │ ├── draft-IERC1822.sol
│ │ │ │ └── draft-IERC2612.sol
│ │ │ ├── metatx
│ │ │ │ ├── ERC2771Context.sol
│ │ │ │ ├── MinimalForwarder.sol
│ │ │ │ └── README.adoc
│ │ │ ├── mocks
│ │ │ │ ├── AccessControlCrossChainMock.sol
│ │ │ │ ├── ArraysMock.sol
│ │ │ │ ├── CallReceiverMock.sol
│ │ │ │ ├── ConditionalEscrowMock.sol
│ │ │ │ ├── ContextMock.sol
│ │ │ │ ├── DummyImplementation.sol
│ │ │ │ ├── EIP712Verifier.sol
│ │ │ │ ├── ERC1271WalletMock.sol
│ │ │ │ ├── ERC165
│ │ │ │ │ ├── ERC165MaliciousData.sol
│ │ │ │ │ ├── ERC165MissingData.sol
│ │ │ │ │ ├── ERC165NotSupported.sol
│ │ │ │ │ └── ERC165ReturnBomb.sol
│ │ │ │ ├── ERC20Mock.sol
│ │ │ │ ├── ERC20Reentrant.sol
│ │ │ │ ├── ERC2771ContextMock.sol
│ │ │ │ ├── ERC3156FlashBorrowerMock.sol
│ │ │ │ ├── ERC4626Mock.sol
│ │ │ │ ├── EtherReceiverMock.sol
│ │ │ │ ├── InitializableMock.sol
│ │ │ │ ├── MulticallTest.sol
│ │ │ │ ├── MultipleInheritanceInitializableMocks.sol
│ │ │ │ ├── PausableMock.sol
│ │ │ │ ├── PullPaymentMock.sol
│ │ │ │ ├── ReentrancyAttack.sol
│ │ │ │ ├── ReentrancyMock.sol
│ │ │ │ ├── RegressionImplementation.sol
│ │ │ │ ├── SafeMathMemoryCheck.sol
│ │ │ │ ├── SingleInheritanceInitializableMocks.sol
│ │ │ │ ├── StorageSlotMock.sol
│ │ │ │ ├── TimelockReentrant.sol
│ │ │ │ ├── TimersBlockNumberImpl.sol
│ │ │ │ ├── TimersTimestampImpl.sol
│ │ │ │ ├── VotesMock.sol
│ │ │ │ ├── compound
│ │ │ │ │ └── CompTimelock.sol
│ │ │ │ ├── crosschain
│ │ │ │ │ ├── bridges.sol
│ │ │ │ │ └── receivers.sol
│ │ │ │ ├── docs
│ │ │ │ │ ├── ERC4626Fees.sol
│ │ │ │ │ └── governance
│ │ │ │ │ │ ├── MyGovernor.sol
│ │ │ │ │ │ ├── MyToken.sol
│ │ │ │ │ │ ├── MyTokenTimestampBased.sol
│ │ │ │ │ │ └── MyTokenWrapped.sol
│ │ │ │ ├── governance
│ │ │ │ │ ├── GovernorCompMock.sol
│ │ │ │ │ ├── GovernorCompatibilityBravoMock.sol
│ │ │ │ │ ├── GovernorMock.sol
│ │ │ │ │ ├── GovernorPreventLateQuorumMock.sol
│ │ │ │ │ ├── GovernorTimelockCompoundMock.sol
│ │ │ │ │ ├── GovernorTimelockControlMock.sol
│ │ │ │ │ ├── GovernorVoteMock.sol
│ │ │ │ │ └── GovernorWithParamsMock.sol
│ │ │ │ ├── proxy
│ │ │ │ │ ├── BadBeacon.sol
│ │ │ │ │ ├── ClashingImplementation.sol
│ │ │ │ │ ├── UUPSLegacy.sol
│ │ │ │ │ └── UUPSUpgradeableMock.sol
│ │ │ │ ├── token
│ │ │ │ │ ├── ERC1155ReceiverMock.sol
│ │ │ │ │ ├── ERC20DecimalsMock.sol
│ │ │ │ │ ├── ERC20ExcessDecimalsMock.sol
│ │ │ │ │ ├── ERC20FlashMintMock.sol
│ │ │ │ │ ├── ERC20ForceApproveMock.sol
│ │ │ │ │ ├── ERC20MulticallMock.sol
│ │ │ │ │ ├── ERC20NoReturnMock.sol
│ │ │ │ │ ├── ERC20PermitNoRevertMock.sol
│ │ │ │ │ ├── ERC20ReturnFalseMock.sol
│ │ │ │ │ ├── ERC20VotesLegacyMock.sol
│ │ │ │ │ ├── ERC4626OffsetMock.sol
│ │ │ │ │ ├── ERC4646FeesMock.sol
│ │ │ │ │ ├── ERC721ConsecutiveEnumerableMock.sol
│ │ │ │ │ ├── ERC721ConsecutiveMock.sol
│ │ │ │ │ ├── ERC721ReceiverMock.sol
│ │ │ │ │ ├── ERC721URIStorageMock.sol
│ │ │ │ │ ├── ERC777Mock.sol
│ │ │ │ │ ├── ERC777SenderRecipientMock.sol
│ │ │ │ │ └── VotesTimestamp.sol
│ │ │ │ └── wizard
│ │ │ │ │ ├── MyGovernor1.sol
│ │ │ │ │ ├── MyGovernor2.sol
│ │ │ │ │ └── MyGovernor3.sol
│ │ │ ├── package.json
│ │ │ ├── proxy
│ │ │ │ ├── Clones.sol
│ │ │ │ ├── ERC1967
│ │ │ │ │ ├── ERC1967Proxy.sol
│ │ │ │ │ └── ERC1967Upgrade.sol
│ │ │ │ ├── Proxy.sol
│ │ │ │ ├── README.adoc
│ │ │ │ ├── beacon
│ │ │ │ │ ├── BeaconProxy.sol
│ │ │ │ │ ├── IBeacon.sol
│ │ │ │ │ └── UpgradeableBeacon.sol
│ │ │ │ ├── transparent
│ │ │ │ │ ├── ProxyAdmin.sol
│ │ │ │ │ └── TransparentUpgradeableProxy.sol
│ │ │ │ └── utils
│ │ │ │ │ ├── Initializable.sol
│ │ │ │ │ └── UUPSUpgradeable.sol
│ │ │ ├── security
│ │ │ │ ├── Pausable.sol
│ │ │ │ ├── PullPayment.sol
│ │ │ │ ├── README.adoc
│ │ │ │ └── ReentrancyGuard.sol
│ │ │ ├── token
│ │ │ │ ├── ERC1155
│ │ │ │ │ ├── ERC1155.sol
│ │ │ │ │ ├── IERC1155.sol
│ │ │ │ │ ├── IERC1155Receiver.sol
│ │ │ │ │ ├── README.adoc
│ │ │ │ │ ├── extensions
│ │ │ │ │ │ ├── ERC1155Burnable.sol
│ │ │ │ │ │ ├── ERC1155Pausable.sol
│ │ │ │ │ │ ├── ERC1155Supply.sol
│ │ │ │ │ │ ├── ERC1155URIStorage.sol
│ │ │ │ │ │ └── IERC1155MetadataURI.sol
│ │ │ │ │ ├── presets
│ │ │ │ │ │ ├── ERC1155PresetMinterPauser.sol
│ │ │ │ │ │ └── README.md
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── ERC1155Holder.sol
│ │ │ │ │ │ └── ERC1155Receiver.sol
│ │ │ │ ├── ERC20
│ │ │ │ │ ├── ERC20.sol
│ │ │ │ │ ├── IERC20.sol
│ │ │ │ │ ├── README.adoc
│ │ │ │ │ ├── extensions
│ │ │ │ │ │ ├── ERC20Burnable.sol
│ │ │ │ │ │ ├── ERC20Capped.sol
│ │ │ │ │ │ ├── ERC20FlashMint.sol
│ │ │ │ │ │ ├── ERC20Pausable.sol
│ │ │ │ │ │ ├── ERC20Permit.sol
│ │ │ │ │ │ ├── ERC20Snapshot.sol
│ │ │ │ │ │ ├── ERC20Votes.sol
│ │ │ │ │ │ ├── ERC20VotesComp.sol
│ │ │ │ │ │ ├── ERC20Wrapper.sol
│ │ │ │ │ │ ├── ERC4626.sol
│ │ │ │ │ │ ├── IERC20Metadata.sol
│ │ │ │ │ │ ├── IERC20Permit.sol
│ │ │ │ │ │ ├── draft-ERC20Permit.sol
│ │ │ │ │ │ └── draft-IERC20Permit.sol
│ │ │ │ │ ├── presets
│ │ │ │ │ │ ├── ERC20PresetFixedSupply.sol
│ │ │ │ │ │ ├── ERC20PresetMinterPauser.sol
│ │ │ │ │ │ └── README.md
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── SafeERC20.sol
│ │ │ │ │ │ └── TokenTimelock.sol
│ │ │ │ ├── ERC721
│ │ │ │ │ ├── ERC721.sol
│ │ │ │ │ ├── IERC721.sol
│ │ │ │ │ ├── IERC721Receiver.sol
│ │ │ │ │ ├── README.adoc
│ │ │ │ │ ├── extensions
│ │ │ │ │ │ ├── ERC721Burnable.sol
│ │ │ │ │ │ ├── ERC721Consecutive.sol
│ │ │ │ │ │ ├── ERC721Enumerable.sol
│ │ │ │ │ │ ├── ERC721Pausable.sol
│ │ │ │ │ │ ├── ERC721Royalty.sol
│ │ │ │ │ │ ├── ERC721URIStorage.sol
│ │ │ │ │ │ ├── ERC721Votes.sol
│ │ │ │ │ │ ├── ERC721Wrapper.sol
│ │ │ │ │ │ ├── IERC721Enumerable.sol
│ │ │ │ │ │ ├── IERC721Metadata.sol
│ │ │ │ │ │ └── draft-ERC721Votes.sol
│ │ │ │ │ ├── presets
│ │ │ │ │ │ ├── ERC721PresetMinterPauserAutoId.sol
│ │ │ │ │ │ └── README.md
│ │ │ │ │ └── utils
│ │ │ │ │ │ └── ERC721Holder.sol
│ │ │ │ ├── ERC777
│ │ │ │ │ ├── ERC777.sol
│ │ │ │ │ ├── IERC777.sol
│ │ │ │ │ ├── IERC777Recipient.sol
│ │ │ │ │ ├── IERC777Sender.sol
│ │ │ │ │ ├── README.adoc
│ │ │ │ │ └── presets
│ │ │ │ │ │ └── ERC777PresetFixedSupply.sol
│ │ │ │ └── common
│ │ │ │ │ ├── ERC2981.sol
│ │ │ │ │ └── README.adoc
│ │ │ ├── utils
│ │ │ │ ├── Address.sol
│ │ │ │ ├── Arrays.sol
│ │ │ │ ├── Base64.sol
│ │ │ │ ├── Checkpoints.sol
│ │ │ │ ├── Context.sol
│ │ │ │ ├── Counters.sol
│ │ │ │ ├── Create2.sol
│ │ │ │ ├── Multicall.sol
│ │ │ │ ├── README.adoc
│ │ │ │ ├── ShortStrings.sol
│ │ │ │ ├── StorageSlot.sol
│ │ │ │ ├── Strings.sol
│ │ │ │ ├── Timers.sol
│ │ │ │ ├── cryptography
│ │ │ │ │ ├── ECDSA.sol
│ │ │ │ │ ├── EIP712.sol
│ │ │ │ │ ├── MerkleProof.sol
│ │ │ │ │ ├── SignatureChecker.sol
│ │ │ │ │ └── draft-EIP712.sol
│ │ │ │ ├── escrow
│ │ │ │ │ ├── ConditionalEscrow.sol
│ │ │ │ │ ├── Escrow.sol
│ │ │ │ │ └── RefundEscrow.sol
│ │ │ │ ├── introspection
│ │ │ │ │ ├── ERC165.sol
│ │ │ │ │ ├── ERC165Checker.sol
│ │ │ │ │ ├── ERC165Storage.sol
│ │ │ │ │ ├── ERC1820Implementer.sol
│ │ │ │ │ ├── IERC165.sol
│ │ │ │ │ ├── IERC1820Implementer.sol
│ │ │ │ │ └── IERC1820Registry.sol
│ │ │ │ ├── math
│ │ │ │ │ ├── Math.sol
│ │ │ │ │ ├── SafeCast.sol
│ │ │ │ │ ├── SafeMath.sol
│ │ │ │ │ ├── SignedMath.sol
│ │ │ │ │ └── SignedSafeMath.sol
│ │ │ │ └── structs
│ │ │ │ │ ├── BitMaps.sol
│ │ │ │ │ ├── DoubleEndedQueue.sol
│ │ │ │ │ ├── EnumerableMap.sol
│ │ │ │ │ └── EnumerableSet.sol
│ │ │ └── vendor
│ │ │ │ ├── amb
│ │ │ │ └── IAMB.sol
│ │ │ │ ├── arbitrum
│ │ │ │ ├── IArbSys.sol
│ │ │ │ ├── IBridge.sol
│ │ │ │ ├── IDelayedMessageProvider.sol
│ │ │ │ ├── IInbox.sol
│ │ │ │ └── IOutbox.sol
│ │ │ │ ├── compound
│ │ │ │ ├── ICompoundTimelock.sol
│ │ │ │ └── LICENSE
│ │ │ │ ├── optimism
│ │ │ │ ├── ICrossDomainMessenger.sol
│ │ │ │ └── LICENSE
│ │ │ │ └── polygon
│ │ │ │ └── IFxMessageProcessor.sol
│ │ ├── docs
│ │ │ ├── README.md
│ │ │ ├── antora.yml
│ │ │ ├── config.js
│ │ │ ├── modules
│ │ │ │ └── ROOT
│ │ │ │ │ ├── images
│ │ │ │ │ ├── erc4626-attack-3a.png
│ │ │ │ │ ├── erc4626-attack-3b.png
│ │ │ │ │ ├── erc4626-attack-6.png
│ │ │ │ │ ├── erc4626-attack.png
│ │ │ │ │ ├── erc4626-deposit.png
│ │ │ │ │ ├── erc4626-mint.png
│ │ │ │ │ ├── erc4626-rate-linear.png
│ │ │ │ │ ├── erc4626-rate-loglog.png
│ │ │ │ │ ├── erc4626-rate-loglogext.png
│ │ │ │ │ ├── tally-exec.png
│ │ │ │ │ └── tally-vote.png
│ │ │ │ │ ├── nav.adoc
│ │ │ │ │ └── pages
│ │ │ │ │ ├── access-control.adoc
│ │ │ │ │ ├── crosschain.adoc
│ │ │ │ │ ├── crowdsales.adoc
│ │ │ │ │ ├── drafts.adoc
│ │ │ │ │ ├── erc1155.adoc
│ │ │ │ │ ├── erc20-supply.adoc
│ │ │ │ │ ├── erc20.adoc
│ │ │ │ │ ├── erc4626.adoc
│ │ │ │ │ ├── erc721.adoc
│ │ │ │ │ ├── erc777.adoc
│ │ │ │ │ ├── extending-contracts.adoc
│ │ │ │ │ ├── governance.adoc
│ │ │ │ │ ├── index.adoc
│ │ │ │ │ ├── releases-stability.adoc
│ │ │ │ │ ├── tokens.adoc
│ │ │ │ │ ├── upgradeable.adoc
│ │ │ │ │ ├── utilities.adoc
│ │ │ │ │ └── wizard.adoc
│ │ │ └── templates
│ │ │ │ ├── contract.hbs
│ │ │ │ ├── helpers.js
│ │ │ │ ├── page.hbs
│ │ │ │ └── properties.js
│ │ ├── foundry.toml
│ │ ├── hardhat.config.js
│ │ ├── hardhat
│ │ │ ├── env-artifacts.js
│ │ │ ├── env-contract.js
│ │ │ ├── ignore-unreachable-warnings.js
│ │ │ ├── skip-foundry-tests.js
│ │ │ └── task-test-get-files.js
│ │ ├── lib
│ │ │ ├── erc4626-tests
│ │ │ │ ├── ERC4626.prop.sol
│ │ │ │ ├── ERC4626.test.sol
│ │ │ │ ├── LICENSE
│ │ │ │ └── README.md
│ │ │ └── forge-std
│ │ │ │ ├── .github
│ │ │ │ └── workflows
│ │ │ │ │ └── ci.yml
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .gitmodules
│ │ │ │ ├── LICENSE-APACHE
│ │ │ │ ├── LICENSE-MIT
│ │ │ │ ├── README.md
│ │ │ │ ├── foundry.toml
│ │ │ │ ├── lib
│ │ │ │ └── ds-test
│ │ │ │ │ ├── .github
│ │ │ │ │ └── workflows
│ │ │ │ │ │ └── build.yml
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── default.nix
│ │ │ │ │ ├── demo
│ │ │ │ │ └── demo.sol
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── src
│ │ │ │ │ ├── test.sol
│ │ │ │ │ └── test.t.sol
│ │ │ │ ├── package.json
│ │ │ │ ├── src
│ │ │ │ ├── Base.sol
│ │ │ │ ├── Script.sol
│ │ │ │ ├── StdAssertions.sol
│ │ │ │ ├── StdChains.sol
│ │ │ │ ├── StdCheats.sol
│ │ │ │ ├── StdError.sol
│ │ │ │ ├── StdInvariant.sol
│ │ │ │ ├── StdJson.sol
│ │ │ │ ├── StdMath.sol
│ │ │ │ ├── StdStorage.sol
│ │ │ │ ├── StdStyle.sol
│ │ │ │ ├── StdUtils.sol
│ │ │ │ ├── Test.sol
│ │ │ │ ├── Vm.sol
│ │ │ │ ├── console.sol
│ │ │ │ ├── console2.sol
│ │ │ │ └── interfaces
│ │ │ │ │ ├── IERC1155.sol
│ │ │ │ │ ├── IERC165.sol
│ │ │ │ │ ├── IERC20.sol
│ │ │ │ │ ├── IERC4626.sol
│ │ │ │ │ ├── IERC721.sol
│ │ │ │ │ └── IMulticall3.sol
│ │ │ │ └── test
│ │ │ │ ├── StdAssertions.t.sol
│ │ │ │ ├── StdChains.t.sol
│ │ │ │ ├── StdCheats.t.sol
│ │ │ │ ├── StdError.t.sol
│ │ │ │ ├── StdMath.t.sol
│ │ │ │ ├── StdStorage.t.sol
│ │ │ │ ├── StdStyle.t.sol
│ │ │ │ ├── StdUtils.t.sol
│ │ │ │ ├── compilation
│ │ │ │ ├── CompilationScript.sol
│ │ │ │ ├── CompilationScriptBase.sol
│ │ │ │ ├── CompilationTest.sol
│ │ │ │ └── CompilationTestBase.sol
│ │ │ │ └── fixtures
│ │ │ │ └── broadcast.log.json
│ │ ├── logo.svg
│ │ ├── netlify.toml
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── remappings.txt
│ │ ├── renovate.json
│ │ ├── requirements.txt
│ │ ├── scripts
│ │ │ ├── checks
│ │ │ │ ├── compare-layout.js
│ │ │ │ ├── compareGasReports.js
│ │ │ │ ├── extract-layout.js
│ │ │ │ ├── generation.sh
│ │ │ │ └── inheritance-ordering.js
│ │ │ ├── gen-nav.js
│ │ │ ├── generate
│ │ │ │ ├── format-lines.js
│ │ │ │ ├── run.js
│ │ │ │ └── templates
│ │ │ │ │ ├── Checkpoints.js
│ │ │ │ │ ├── Checkpoints.opts.js
│ │ │ │ │ ├── Checkpoints.t.js
│ │ │ │ │ ├── EnumerableMap.js
│ │ │ │ │ ├── EnumerableSet.js
│ │ │ │ │ ├── SafeCast.js
│ │ │ │ │ ├── StorageSlot.js
│ │ │ │ │ └── conversion.js
│ │ │ ├── git-user-config.sh
│ │ │ ├── helpers.js
│ │ │ ├── migrate-imports.js
│ │ │ ├── prepack.sh
│ │ │ ├── prepare-contracts-package.sh
│ │ │ ├── prepare-docs.sh
│ │ │ ├── prepare.sh
│ │ │ ├── release
│ │ │ │ ├── format-changelog.js
│ │ │ │ ├── synchronize-versions.js
│ │ │ │ ├── update-comment.js
│ │ │ │ ├── version.sh
│ │ │ │ └── workflow
│ │ │ │ │ ├── exit-prerelease.sh
│ │ │ │ │ ├── github-release.js
│ │ │ │ │ ├── integrity-check.sh
│ │ │ │ │ ├── pack.sh
│ │ │ │ │ ├── publish.sh
│ │ │ │ │ ├── rerun.js
│ │ │ │ │ ├── set-changesets-pr-title.js
│ │ │ │ │ ├── start.sh
│ │ │ │ │ └── state.js
│ │ │ ├── remove-ignored-artifacts.js
│ │ │ ├── update-docs-branch.js
│ │ │ └── upgradeable
│ │ │ │ ├── README.md
│ │ │ │ ├── patch-apply.sh
│ │ │ │ ├── patch-save.sh
│ │ │ │ ├── transpile-onto.sh
│ │ │ │ ├── transpile.sh
│ │ │ │ └── upgradeable.patch
│ │ ├── slither.config.json
│ │ └── test
│ │ │ ├── TESTING.md
│ │ │ ├── access
│ │ │ ├── AccessControl.behavior.js
│ │ │ ├── AccessControl.test.js
│ │ │ ├── AccessControlCrossChain.test.js
│ │ │ ├── AccessControlDefaultAdminRules.test.js
│ │ │ ├── AccessControlEnumerable.test.js
│ │ │ ├── Ownable.test.js
│ │ │ └── Ownable2Step.test.js
│ │ │ ├── crosschain
│ │ │ └── CrossChainEnabled.test.js
│ │ │ ├── finance
│ │ │ ├── PaymentSplitter.test.js
│ │ │ ├── VestingWallet.behavior.js
│ │ │ └── VestingWallet.test.js
│ │ │ ├── governance
│ │ │ ├── Governor.t.sol
│ │ │ ├── Governor.test.js
│ │ │ ├── TimelockController.test.js
│ │ │ ├── compatibility
│ │ │ │ └── GovernorCompatibilityBravo.test.js
│ │ │ ├── extensions
│ │ │ │ ├── GovernorComp.test.js
│ │ │ │ ├── GovernorERC721.test.js
│ │ │ │ ├── GovernorPreventLateQuorum.test.js
│ │ │ │ ├── GovernorTimelockCompound.test.js
│ │ │ │ ├── GovernorTimelockControl.test.js
│ │ │ │ ├── GovernorVotesQuorumFraction.test.js
│ │ │ │ └── GovernorWithParams.test.js
│ │ │ └── utils
│ │ │ │ ├── EIP6372.behavior.js
│ │ │ │ ├── Votes.behavior.js
│ │ │ │ └── Votes.test.js
│ │ │ ├── helpers
│ │ │ ├── chainid.js
│ │ │ ├── create2.js
│ │ │ ├── crosschain.js
│ │ │ ├── customError.js
│ │ │ ├── eip712.js
│ │ │ ├── enums.js
│ │ │ ├── erc1967.js
│ │ │ ├── governance.js
│ │ │ ├── map-values.js
│ │ │ ├── sign.js
│ │ │ ├── time.js
│ │ │ └── txpool.js
│ │ │ ├── metatx
│ │ │ ├── ERC2771Context.test.js
│ │ │ └── MinimalForwarder.test.js
│ │ │ ├── migrate-imports.test.js
│ │ │ ├── proxy
│ │ │ ├── Clones.behaviour.js
│ │ │ ├── Clones.test.js
│ │ │ ├── ERC1967
│ │ │ │ └── ERC1967Proxy.test.js
│ │ │ ├── Proxy.behaviour.js
│ │ │ ├── beacon
│ │ │ │ ├── BeaconProxy.test.js
│ │ │ │ └── UpgradeableBeacon.test.js
│ │ │ ├── transparent
│ │ │ │ ├── ProxyAdmin.test.js
│ │ │ │ ├── TransparentUpgradeableProxy.behaviour.js
│ │ │ │ └── TransparentUpgradeableProxy.test.js
│ │ │ └── utils
│ │ │ │ ├── Initializable.test.js
│ │ │ │ └── UUPSUpgradeable.test.js
│ │ │ ├── security
│ │ │ ├── Pausable.test.js
│ │ │ ├── PullPayment.test.js
│ │ │ └── ReentrancyGuard.test.js
│ │ │ ├── token
│ │ │ ├── ERC1155
│ │ │ │ ├── ERC1155.behavior.js
│ │ │ │ ├── ERC1155.test.js
│ │ │ │ ├── extensions
│ │ │ │ │ ├── ERC1155Burnable.test.js
│ │ │ │ │ ├── ERC1155Pausable.test.js
│ │ │ │ │ ├── ERC1155Supply.test.js
│ │ │ │ │ └── ERC1155URIStorage.test.js
│ │ │ │ ├── presets
│ │ │ │ │ └── ERC1155PresetMinterPauser.test.js
│ │ │ │ └── utils
│ │ │ │ │ └── ERC1155Holder.test.js
│ │ │ ├── ERC20
│ │ │ │ ├── ERC20.behavior.js
│ │ │ │ ├── ERC20.test.js
│ │ │ │ ├── extensions
│ │ │ │ │ ├── ERC20Burnable.behavior.js
│ │ │ │ │ ├── ERC20Burnable.test.js
│ │ │ │ │ ├── ERC20Capped.behavior.js
│ │ │ │ │ ├── ERC20Capped.test.js
│ │ │ │ │ ├── ERC20FlashMint.test.js
│ │ │ │ │ ├── ERC20Pausable.test.js
│ │ │ │ │ ├── ERC20Snapshot.test.js
│ │ │ │ │ ├── ERC20Votes.test.js
│ │ │ │ │ ├── ERC20VotesComp.test.js
│ │ │ │ │ ├── ERC20Wrapper.test.js
│ │ │ │ │ ├── ERC4626.t.sol
│ │ │ │ │ ├── ERC4626.test.js
│ │ │ │ │ └── draft-ERC20Permit.test.js
│ │ │ │ ├── presets
│ │ │ │ │ ├── ERC20PresetFixedSupply.test.js
│ │ │ │ │ └── ERC20PresetMinterPauser.test.js
│ │ │ │ └── utils
│ │ │ │ │ ├── SafeERC20.test.js
│ │ │ │ │ └── TokenTimelock.test.js
│ │ │ ├── ERC721
│ │ │ │ ├── ERC721.behavior.js
│ │ │ │ ├── ERC721.test.js
│ │ │ │ ├── ERC721Enumerable.test.js
│ │ │ │ ├── extensions
│ │ │ │ │ ├── ERC721Burnable.test.js
│ │ │ │ │ ├── ERC721Consecutive.t.sol
│ │ │ │ │ ├── ERC721Consecutive.test.js
│ │ │ │ │ ├── ERC721Pausable.test.js
│ │ │ │ │ ├── ERC721Royalty.test.js
│ │ │ │ │ ├── ERC721URIStorage.test.js
│ │ │ │ │ ├── ERC721Votes.test.js
│ │ │ │ │ └── ERC721Wrapper.test.js
│ │ │ │ ├── presets
│ │ │ │ │ └── ERC721PresetMinterPauserAutoId.test.js
│ │ │ │ └── utils
│ │ │ │ │ └── ERC721Holder.test.js
│ │ │ ├── ERC777
│ │ │ │ ├── ERC777.behavior.js
│ │ │ │ ├── ERC777.test.js
│ │ │ │ └── presets
│ │ │ │ │ └── ERC777PresetFixedSupply.test.js
│ │ │ └── common
│ │ │ │ └── ERC2981.behavior.js
│ │ │ └── utils
│ │ │ ├── Address.test.js
│ │ │ ├── Arrays.test.js
│ │ │ ├── Base64.test.js
│ │ │ ├── Checkpoints.t.sol
│ │ │ ├── Checkpoints.test.js
│ │ │ ├── Context.behavior.js
│ │ │ ├── Context.test.js
│ │ │ ├── Counters.test.js
│ │ │ ├── Create2.test.js
│ │ │ ├── Multicall.test.js
│ │ │ ├── ShortStrings.t.sol
│ │ │ ├── ShortStrings.test.js
│ │ │ ├── StorageSlot.test.js
│ │ │ ├── Strings.test.js
│ │ │ ├── TimersBlockNumberImpl.test.js
│ │ │ ├── TimersTimestamp.test.js
│ │ │ ├── cryptography
│ │ │ ├── ECDSA.test.js
│ │ │ ├── EIP712.test.js
│ │ │ ├── MerkleProof.test.js
│ │ │ └── SignatureChecker.test.js
│ │ │ ├── escrow
│ │ │ ├── ConditionalEscrow.test.js
│ │ │ ├── Escrow.behavior.js
│ │ │ ├── Escrow.test.js
│ │ │ └── RefundEscrow.test.js
│ │ │ ├── introspection
│ │ │ ├── ERC165.test.js
│ │ │ ├── ERC165Checker.test.js
│ │ │ ├── ERC165Storage.test.js
│ │ │ ├── ERC1820Implementer.test.js
│ │ │ └── SupportsInterface.behavior.js
│ │ │ ├── math
│ │ │ ├── Math.t.sol
│ │ │ ├── Math.test.js
│ │ │ ├── SafeCast.test.js
│ │ │ ├── SafeMath.test.js
│ │ │ ├── SignedMath.test.js
│ │ │ └── SignedSafeMath.test.js
│ │ │ └── structs
│ │ │ ├── BitMap.test.js
│ │ │ ├── DoubleEndedQueue.test.js
│ │ │ ├── EnumerableMap.behavior.js
│ │ │ ├── EnumerableMap.test.js
│ │ │ ├── EnumerableSet.behavior.js
│ │ │ └── EnumerableSet.test.js
│ ├── safe-contracts
│ │ ├── .env.sample
│ │ ├── .gitattributes
│ │ ├── .github
│ │ │ ├── ISSUE_TEMPLATE
│ │ │ │ ├── bug_report.md
│ │ │ │ └── feature_request.md
│ │ │ └── workflows
│ │ │ │ └── ci.yml
│ │ ├── .gitignore
│ │ ├── .husky
│ │ │ ├── .gitignore
│ │ │ └── pre-commit
│ │ ├── .nvmrc
│ │ ├── .prettierrc
│ │ ├── .solcover.js
│ │ ├── .solhint.json
│ │ ├── .vscode
│ │ │ └── launch.json
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── benchmark
│ │ │ ├── GnosisSafe.Creation.spec.ts
│ │ │ ├── GnosisSafe.ERC1155.spec.ts
│ │ │ ├── GnosisSafe.ERC20.spec.ts
│ │ │ ├── GnosisSafe.Ether.spec.ts
│ │ │ ├── GnosisSafe.Proxy.spec.ts
│ │ │ └── utils
│ │ │ │ └── setup.ts
│ │ ├── contracts
│ │ │ ├── GnosisSafe.sol
│ │ │ ├── GnosisSafeL2.sol
│ │ │ ├── accessors
│ │ │ │ └── SimulateTxAccessor.sol
│ │ │ ├── base
│ │ │ │ ├── Executor.sol
│ │ │ │ ├── FallbackManager.sol
│ │ │ │ ├── GuardManager.sol
│ │ │ │ ├── ModuleManager.sol
│ │ │ │ └── OwnerManager.sol
│ │ │ ├── common
│ │ │ │ ├── Enum.sol
│ │ │ │ ├── EtherPaymentFallback.sol
│ │ │ │ ├── SecuredTokenTransfer.sol
│ │ │ │ ├── SelfAuthorized.sol
│ │ │ │ ├── SignatureDecoder.sol
│ │ │ │ ├── Singleton.sol
│ │ │ │ └── StorageAccessible.sol
│ │ │ ├── examples
│ │ │ │ ├── guards
│ │ │ │ │ ├── DebugTransactionGuard.sol
│ │ │ │ │ ├── DelegateCallTransactionGuard.sol
│ │ │ │ │ └── ReentrancyTransactionGuard.sol
│ │ │ │ └── libraries
│ │ │ │ │ ├── GnosisSafeStorage.sol
│ │ │ │ │ ├── Migrate_1_3_0_to_1_2_0.sol
│ │ │ │ │ └── SignMessage.sol
│ │ │ ├── external
│ │ │ │ └── GnosisSafeMath.sol
│ │ │ ├── handler
│ │ │ │ ├── CompatibilityFallbackHandler.sol
│ │ │ │ ├── DefaultCallbackHandler.sol
│ │ │ │ └── HandlerContext.sol
│ │ │ ├── interfaces
│ │ │ │ ├── ERC1155TokenReceiver.sol
│ │ │ │ ├── ERC721TokenReceiver.sol
│ │ │ │ ├── ERC777TokensRecipient.sol
│ │ │ │ ├── IERC165.sol
│ │ │ │ ├── ISignatureValidator.sol
│ │ │ │ └── ViewStorageAccessible.sol
│ │ │ ├── libraries
│ │ │ │ ├── CreateCall.sol
│ │ │ │ ├── MultiSend.sol
│ │ │ │ └── MultiSendCallOnly.sol
│ │ │ ├── proxies
│ │ │ │ ├── GnosisSafeProxy.sol
│ │ │ │ ├── GnosisSafeProxyFactory.sol
│ │ │ │ └── IProxyCreationCallback.sol
│ │ │ └── test
│ │ │ │ ├── ERC1155Token.sol
│ │ │ │ ├── ERC20Token.sol
│ │ │ │ ├── TestHandler.sol
│ │ │ │ └── Token.sol
│ │ ├── docs
│ │ │ ├── Gnosis_Safe_Audit_Report.pdf
│ │ │ ├── Gnosis_Safe_Audit_Report_1_1_0.pdf
│ │ │ ├── Gnosis_Safe_Audit_Report_1_1_1.pdf
│ │ │ ├── Gnosis_Safe_Audit_Report_1_2_0.pdf
│ │ │ ├── Gnosis_Safe_Audit_Report_1_3_0_Final.pdf
│ │ │ ├── Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf
│ │ │ ├── Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf
│ │ │ ├── Gnosis_Safe_Symbolic_Execution.pdf
│ │ │ ├── alexey_audit.md
│ │ │ ├── audit_1_1_1.md
│ │ │ ├── audit_1_2_0.md
│ │ │ ├── audit_1_3_0.md
│ │ │ ├── error_codes.md
│ │ │ ├── guidelines.md
│ │ │ └── rv_1_0_0.md
│ │ ├── hardhat.config.ts
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── deploy
│ │ │ │ ├── deploy_accessors.ts
│ │ │ │ ├── deploy_factories.ts
│ │ │ │ ├── deploy_handlers.ts
│ │ │ │ ├── deploy_libraries.ts
│ │ │ │ ├── deploy_safe_l2.ts
│ │ │ │ └── deploy_safe_singleton.ts
│ │ │ ├── index.ts
│ │ │ ├── tasks
│ │ │ │ ├── deploy_contracts.ts
│ │ │ │ ├── local_verify.ts
│ │ │ │ └── show_codesize.ts
│ │ │ └── utils
│ │ │ │ ├── constants.ts
│ │ │ │ ├── execution.ts
│ │ │ │ ├── multisend.ts
│ │ │ │ ├── proxies.ts
│ │ │ │ └── solc.ts
│ │ ├── test
│ │ │ ├── accessors
│ │ │ │ └── SimulateTxAccessor.spec.ts
│ │ │ ├── core
│ │ │ │ ├── GnosisSafe.Estimation.spec.ts
│ │ │ │ ├── GnosisSafe.Execution.spec.ts
│ │ │ │ ├── GnosisSafe.FallbackManager.spec.ts
│ │ │ │ ├── GnosisSafe.GuardManager.spec.ts
│ │ │ │ ├── GnosisSafe.Incoming.spec.ts
│ │ │ │ ├── GnosisSafe.ModuleManager.spec.ts
│ │ │ │ ├── GnosisSafe.OwnerManager.spec.ts
│ │ │ │ ├── GnosisSafe.Setup.spec.ts
│ │ │ │ ├── GnosisSafe.Signatures.spec.ts
│ │ │ │ └── GnosisSafe.StorageAccessible.spec.ts
│ │ │ ├── factory
│ │ │ │ ├── Proxy.spec.ts
│ │ │ │ └── ProxyFactory.spec.ts
│ │ │ ├── guards
│ │ │ │ ├── DebugTransactionGuard.spec.ts
│ │ │ │ ├── DelegateCallTransactionGuard.spec.ts
│ │ │ │ └── ReentrencyTransactionGuard.spec.ts
│ │ │ ├── handlers
│ │ │ │ ├── CompatibilityFallbackHandler.spec.ts
│ │ │ │ ├── DefaultCallbackHandler.spec.ts
│ │ │ │ └── HandlerContext.spec.ts
│ │ │ ├── integration
│ │ │ │ ├── GnosisSafe.0xExploit.spec.ts
│ │ │ │ ├── GnosisSafe.ERC1155.spec.ts
│ │ │ │ └── GnosisSafe.ReservedAddresses.spec.ts
│ │ │ ├── json
│ │ │ │ └── safeDeployment.json
│ │ │ ├── l2
│ │ │ │ └── GnosisSafe.Execution.spec.ts
│ │ │ ├── libraries
│ │ │ │ ├── CreateCall.spec.ts
│ │ │ │ ├── Migration.spec.ts
│ │ │ │ ├── MultiSend.spec.ts
│ │ │ │ ├── MultiSendCallOnly.spec.ts
│ │ │ │ └── SignMessageLib.spec.ts
│ │ │ ├── migration
│ │ │ │ ├── UpgradeFromSafe111.spec.ts
│ │ │ │ ├── UpgradeFromSafe120.spec.ts
│ │ │ │ └── subTests.spec.ts
│ │ │ └── utils
│ │ │ │ ├── config.ts
│ │ │ │ ├── contracts.ts
│ │ │ │ ├── encoding.ts
│ │ │ │ └── setup.ts
│ │ ├── tests_deprecated
│ │ │ ├── gnosisSafeNestedSafes.js
│ │ │ ├── gnosisSafeTransactionExecution.js
│ │ │ └── utils
│ │ │ │ ├── execution.js
│ │ │ │ └── general.js
│ │ ├── tsconfig.json
│ │ ├── types
│ │ │ └── solc.d.ts
│ │ └── yarn.lock
│ └── solady
│ │ ├── .github
│ │ ├── pull_request_template.md
│ │ └── workflows
│ │ │ ├── ci-all-via-ir.yml
│ │ │ ├── ci-woke.yml
│ │ │ └── ci.yml
│ │ ├── .gitignore
│ │ ├── .gitmodules
│ │ ├── LICENSE.txt
│ │ ├── README.md
│ │ ├── audits
│ │ ├── ackee-blockchain-solady-report.pdf
│ │ └── shung-solady-erc721-audit.pdf
│ │ ├── ext
│ │ └── woke
│ │ │ ├── EIP712Mock.sol
│ │ │ ├── ERC1155Mock.sol
│ │ │ ├── ERC20Mock.sol
│ │ │ ├── ERC721Mock.sol
│ │ │ ├── MerkleProofMock.sol
│ │ │ ├── NoETHMock.sol
│ │ │ ├── SignatureCheckerMock.sol
│ │ │ ├── __init__.py
│ │ │ ├── test_eip712.py
│ │ │ ├── test_eip712_fuzz.py
│ │ │ ├── test_erc1155.py
│ │ │ ├── test_erc1155_fuzz.py
│ │ │ ├── test_erc20.py
│ │ │ ├── test_erc721_fuzz.py
│ │ │ ├── test_merkle_proof.py
│ │ │ ├── test_merkle_proof_fuzz.py
│ │ │ ├── test_signature_checker_fuzz.py
│ │ │ ├── utils.py
│ │ │ ├── weird
│ │ │ ├── Approval.sol
│ │ │ ├── ApprovalToZero.sol
│ │ │ ├── BlockList.sol
│ │ │ ├── Bytes32Metadata.sol
│ │ │ ├── DaiPermit.sol
│ │ │ ├── ERC20.sol
│ │ │ ├── HighDecimals.sol
│ │ │ ├── LowDecimals.sol
│ │ │ ├── MissingReturns.sol
│ │ │ ├── NoRevert.sol
│ │ │ ├── Pausable.sol
│ │ │ ├── Proxied.sol
│ │ │ ├── Reentrant.sol
│ │ │ ├── ReturnsFalse.sol
│ │ │ ├── RevertToZero.sol
│ │ │ ├── RevertZero.sol
│ │ │ ├── TransferFee.sol
│ │ │ ├── Uint96.sol
│ │ │ └── Upgradable.sol
│ │ │ ├── woke-via-ir.toml
│ │ │ └── woke.toml
│ │ ├── foundry.toml
│ │ ├── js
│ │ ├── solady.js
│ │ └── solady.test.js
│ │ ├── lib
│ │ └── ds-test
│ │ │ ├── .gitignore
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── default.nix
│ │ │ ├── demo
│ │ │ └── demo.sol
│ │ │ └── src
│ │ │ └── test.sol
│ │ ├── logo.svg
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ ├── Milady.sol
│ │ ├── auth
│ │ │ ├── Ownable.sol
│ │ │ └── OwnableRoles.sol
│ │ ├── tokens
│ │ │ ├── ERC1155.sol
│ │ │ ├── ERC20.sol
│ │ │ ├── ERC2981.sol
│ │ │ ├── ERC4626.sol
│ │ │ ├── ERC721.sol
│ │ │ └── WETH.sol
│ │ └── utils
│ │ │ ├── Base64.sol
│ │ │ ├── CREATE3.sol
│ │ │ ├── Clone.sol
│ │ │ ├── DateTimeLib.sol
│ │ │ ├── DynamicBufferLib.sol
│ │ │ ├── ECDSA.sol
│ │ │ ├── EIP712.sol
│ │ │ ├── ERC1967Factory.sol
│ │ │ ├── ERC1967FactoryConstants.sol
│ │ │ ├── FixedPointMathLib.sol
│ │ │ ├── LibBit.sol
│ │ │ ├── LibBitmap.sol
│ │ │ ├── LibClone.sol
│ │ │ ├── LibMap.sol
│ │ │ ├── LibPRNG.sol
│ │ │ ├── LibRLP.sol
│ │ │ ├── LibSort.sol
│ │ │ ├── LibString.sol
│ │ │ ├── LibZip.sol
│ │ │ ├── MerkleProofLib.sol
│ │ │ ├── MetadataReaderLib.sol
│ │ │ ├── MinHeapLib.sol
│ │ │ ├── Multicallable.sol
│ │ │ ├── RedBlackTreeLib.sol
│ │ │ ├── SSTORE2.sol
│ │ │ ├── SafeCastLib.sol
│ │ │ ├── SafeTransferLib.sol
│ │ │ └── SignatureCheckerLib.sol
│ │ └── test
│ │ ├── Base64.t.sol
│ │ ├── CREATE3.t.sol
│ │ ├── DateTimeLib.t.sol
│ │ ├── DynamicBufferLib.t.sol
│ │ ├── ECDSA.t.sol
│ │ ├── EIP712.t.sol
│ │ ├── ERC1155.t.sol
│ │ ├── ERC1967Factory.t.sol
│ │ ├── ERC20.t.sol
│ │ ├── ERC2981.t.sol
│ │ ├── ERC4626.t.sol
│ │ ├── ERC721.t.sol
│ │ ├── FixedPointMathLib.t.sol
│ │ ├── LibBit.t.sol
│ │ ├── LibBitmap.t.sol
│ │ ├── LibClone.t.sol
│ │ ├── LibMap.t.sol
│ │ ├── LibPRNG.t.sol
│ │ ├── LibRLP.t.sol
│ │ ├── LibSort.t.sol
│ │ ├── LibString.t.sol
│ │ ├── LibZip.t.sol
│ │ ├── MerkleProofLib.t.sol
│ │ ├── MetadataReaderLib.t.sol
│ │ ├── MinHeapLib.t.sol
│ │ ├── Multicallable.t.sol
│ │ ├── Ownable.t.sol
│ │ ├── OwnableRoles.t.sol
│ │ ├── README.md
│ │ ├── RedBlackTree.t.sol
│ │ ├── SSTORE2.t.sol
│ │ ├── SafeCastLib.t.sol
│ │ ├── SafeTransferLib.t.sol
│ │ ├── SignatureCheckerLib.t.sol
│ │ ├── WETH.t.sol
│ │ └── utils
│ │ ├── InvariantTest.sol
│ │ ├── SoladyTest.sol
│ │ ├── TestPlus.sol
│ │ ├── forge-std
│ │ ├── Script.sol
│ │ ├── Test.sol
│ │ ├── Vm.sol
│ │ └── console.sol
│ │ ├── mocks
│ │ ├── MockCd.sol
│ │ ├── MockEIP712.sol
│ │ ├── MockERC1155.sol
│ │ ├── MockERC1271Malicious.sol
│ │ ├── MockERC1271Wallet.sol
│ │ ├── MockERC20.sol
│ │ ├── MockERC20LikeUSDT.sol
│ │ ├── MockERC2981.sol
│ │ ├── MockERC4626.sol
│ │ ├── MockERC721.sol
│ │ ├── MockETHRecipient.sol
│ │ ├── MockImplementation.sol
│ │ ├── MockMulticallable.sol
│ │ ├── MockOwnable.sol
│ │ └── MockOwnableRoles.sol
│ │ └── weird-tokens
│ │ ├── MissingReturnToken.sol
│ │ ├── ReturnsFalseToken.sol
│ │ ├── ReturnsRawBytesToken.sol
│ │ ├── ReturnsTooLittleToken.sol
│ │ ├── ReturnsTooMuchToken.sol
│ │ ├── ReturnsTwoToken.sol
│ │ └── RevertingToken.sol
├── makefile
├── offchain
│ ├── addressManager.ts
│ ├── addresses
│ │ ├── arb.json
│ │ ├── avax.json
│ │ ├── base.json
│ │ ├── bsc.json
│ │ ├── ftm.json
│ │ ├── goerli.json
│ │ ├── mainnet.json
│ │ ├── optimism.json
│ │ ├── polygon.json
│ │ └── zkevm.json
│ ├── slitherSeverity.ts
│ └── verify.ts
├── package.json
├── remappings.txt
├── scope.txt
├── script
│ ├── deploy_DeployProtocol.s.sol
│ └── utils
│ │ ├── ConsoleFactory.s.sol
│ │ ├── ConstantSetup.s.sol
│ │ └── Deployer.sol
├── slither.config.json
├── sonar-project.properties
├── src
│ ├── core
│ │ ├── AddressProvider.sol
│ │ ├── AddressProviderService.sol
│ │ ├── ConsoleFallbackHandler.sol
│ │ ├── ConsoleOpBuilder.sol
│ │ ├── Constants.sol
│ │ ├── ExecutorPlugin.sol
│ │ ├── PolicyValidator.sol
│ │ ├── SafeDeployer.sol
│ │ ├── SafeEnabler.sol
│ │ ├── SafeModerator.sol
│ │ ├── SafeModeratorOverridable.sol
│ │ ├── TransactionValidator.sol
│ │ └── registries
│ │ │ ├── ExecutorRegistry.sol
│ │ │ ├── PolicyRegistry.sol
│ │ │ └── WalletRegistry.sol
│ └── libraries
│ │ ├── SafeHelper.sol
│ │ └── TypeHashHelper.sol
├── test
│ ├── branch-trees
│ │ ├── AddressProvider
│ │ │ ├── AddressProvider.misc.t.sol
│ │ │ ├── accept-governance
│ │ │ │ ├── AcceptGovernance.t.sol
│ │ │ │ └── AcceptGovernance.tree
│ │ │ ├── set-authorized-address
│ │ │ │ ├── SetAuthorizedAddress.t.sol
│ │ │ │ └── SetAuthorizedAddress.tree
│ │ │ ├── set-governance
│ │ │ │ ├── SetGovernance.t.sol
│ │ │ │ └── SetGovernance.tree
│ │ │ └── set-registry
│ │ │ │ ├── SetRegistry.t.sol
│ │ │ │ └── SetRegistry.tree
│ │ ├── ConsoleFallbackHandler
│ │ │ ├── fallbackHandler.misc.t.sol
│ │ │ └── is-valid-signature
│ │ │ │ └── IsValidSignature.t.sol
│ │ ├── ConsoleOpBuilder
│ │ │ ├── ConsoleOpBuilder.misc.t.sol
│ │ │ ├── disable-executors-on-subaccount
│ │ │ │ └── DisableExecutorOnSubaccount.t.sol
│ │ │ ├── disable-policy-on-console
│ │ │ │ └── DisablePolicyOnConsole.t.sol
│ │ │ ├── enable-executors-on-subaccount
│ │ │ │ └── EnableExecutorsOnSubaccount.t.sol
│ │ │ └── enable-policy-on-console
│ │ │ │ └── EnablePolicyOnConsole.t.sol
│ │ ├── ExecutorPlugin
│ │ │ ├── ExecutorPlugin.misc.t.sol
│ │ │ └── execute-transaction
│ │ │ │ ├── ExecuteTransaction.t.sol
│ │ │ │ └── ExecuteTransaction.tree
│ │ ├── ExecutorRegistry
│ │ │ ├── deregister-executor
│ │ │ │ ├── DeRegisterExecutor.t.sol
│ │ │ │ └── DeRegisterExecutor.tree
│ │ │ └── register-executor
│ │ │ │ ├── RegisterExecutor.t.sol
│ │ │ │ └── RegisterExecutor.tree
│ │ ├── PolicyRegistry
│ │ │ └── update-policy
│ │ │ │ ├── UpdatePolicy.t.sol
│ │ │ │ └── UpdatePolicy.tree
│ │ ├── PolicyValidator
│ │ │ ├── PolicyValidator.misc.t.sol
│ │ │ ├── validate-policy-signature-module-tx
│ │ │ │ ├── ValidatePolicySignatureModuleTx.t.sol
│ │ │ │ └── ValidatePolicySignatureModuleTx.tree
│ │ │ └── validate-policy-signature-safe-tx
│ │ │ │ ├── ValidatePolicySignatureSafeTx.t.sol
│ │ │ │ └── ValidatePolicySignatureSafeTx.tree
│ │ ├── SafeDeployer
│ │ │ ├── SafeDeployer.misc.t.sol
│ │ │ ├── deploy-console-account
│ │ │ │ ├── DeployConsoleAccount.t.sol
│ │ │ │ └── DeployConsoleAccount.tree
│ │ │ └── deploy-sub-account
│ │ │ │ ├── DeploySubAccount.t.sol
│ │ │ │ └── DeploySubAccount.tree
│ │ ├── SafeEnabler
│ │ │ ├── SafeEnabler.misc.t.sol
│ │ │ ├── enable-module
│ │ │ │ └── EnableModule.t.sol
│ │ │ └── set-guard
│ │ │ │ └── SetGuard.t.sol
│ │ ├── SafeModerator
│ │ │ ├── SafeModerator.misc.t.sol
│ │ │ ├── check-after-execution
│ │ │ │ ├── CheckAfterExecution.t.sol
│ │ │ │ └── CheckAfterExecution.tree
│ │ │ └── check-transaction
│ │ │ │ ├── CheckTransaction.t.sol
│ │ │ │ └── CheckTransaction.tree
│ │ ├── SafeModeratorOverridable
│ │ │ ├── SafeModeratorOverridable.misc.t.sol
│ │ │ ├── check-after-execution
│ │ │ │ ├── CheckAfterExecution.t.sol
│ │ │ │ └── CheckAfterExecution.tree
│ │ │ └── check-transaction
│ │ │ │ ├── CheckTransaction.t.sol
│ │ │ │ └── CheckTransaction.tree
│ │ ├── TransactionValidator
│ │ │ ├── validate-post-exec-tx
│ │ │ │ ├── ValidatePostExecutorTransaction.t.sol
│ │ │ │ └── ValidatePostExecutorTransaction.tree
│ │ │ ├── validate-post-tx-overridable
│ │ │ │ ├── ValidatePostTransactionOverridable.t.sol
│ │ │ │ └── ValidatePostTransactionOverridable.tree
│ │ │ ├── validate-post-tx
│ │ │ │ ├── ValidatePostTx.t.sol
│ │ │ │ └── ValidatePostTx.tree
│ │ │ ├── validate-pre-exec-tx
│ │ │ │ ├── ValidatePreExecutorTx.t.sol
│ │ │ │ └── ValidatePreExecutorTx.tree
│ │ │ ├── validate-pre-tx-overridable
│ │ │ │ ├── ValidatePreTxOverridable.t.sol
│ │ │ │ └── ValidatePreTxOverridable.tree
│ │ │ └── validate-pre-tx
│ │ │ │ ├── ValidatePreTx.t.sol
│ │ │ │ └── ValidatePreTx.tree
│ │ └── WalletRegistry
│ │ │ ├── register-subaccount
│ │ │ ├── RegisterSubAccount.t.sol
│ │ │ └── RegisterSubAccount.tree
│ │ │ └── register-wallet
│ │ │ ├── RegisterWallet.t.sol
│ │ │ └── RegisterWallet.tree
│ ├── commons
│ │ ├── AddressRegistry.sol
│ │ ├── ModSignature.sol
│ │ ├── eip712Digest.ts
│ │ └── isValidSignatureEIP712Digest.ts
│ ├── e2e
│ │ └── TxValidator.i.t.sol
│ ├── libs
│ │ ├── SafeHelper.lib.sol
│ │ └── TypeHashHelper.lib.sol
│ ├── mocks
│ │ ├── MockAddressProviderService.sol
│ │ ├── MockContractSigner.sol
│ │ ├── MockERC20.sol
│ │ ├── MockPolicyValidator.sol
│ │ ├── MockTransactionValidator.sol
│ │ └── MockUnsupportedAddress.sol
│ ├── units
│ │ ├── SafeHelper.t.sol
│ │ └── TypeHashHelper.t.sol
│ └── workflow
│ │ └── ConsoleFactory.t.sol
└── tsconfig.json
└── discord-export
├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html
├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files
├── 01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png
├── 025a312229f81f0132287a07237573a4-15005.png
├── 027771eed6eec6d29d87c3d641c6c03f-DAC44.png
├── 03056f38c0409e11b992662ff8b9d291-C22C9.png
├── 0432dad70b18fa0232c147833c40f5c2-594DD.png
├── 08b5148b236c630bb46aacacf73a217b-315CF.png
├── 0ae311857ca5610dd4e8476c7100f7bd-A60D6.png
├── 0dd6255142c84dcc6ec663458ed3fda9-E98D2.png
├── 1-B2132.png
├── 1009047393624412210-1B61B.png
├── 1009047429766713404-16E35.gif
├── 1009047660084334622-4FCFD.png
├── 1025426040316756068-05843.png
├── 1083068770823721071-EE4F6.png
├── 108db4db43a8df92fb224ce27c8419ec-5A94A.png
├── 1110201692663857255-A8E42.png
├── 1128344547949301911-C84AB.png
├── 1128344679365234779-05F87.png
├── 1162a888c78000773591a5db6de8aa9f-DCF7E.png
├── 12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png
├── 14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png
├── 1f37b-F650C.svg
├── 1f389-5C738.svg
├── 1f3c1-445DC.svg
├── 1f3c6-621A1.svg
├── 1f3fc-4884A.svg
├── 1f43a-EB486.svg
├── 1f440-6C64D.svg
├── 1f446-9CC34.svg
├── 1f44b-8A059.svg
├── 1f44c-1f3fb-EAAEE.svg
├── 1f44c-59547.svg
├── 1f44d-1f3fc-EAB0D.svg
├── 1f44d-1f3fe-78CB5.svg
├── 1f44d-27259.svg
├── 1f44f-3D381.svg
├── 1f4b8-E3468.svg
├── 1f4c6-44E30.svg
├── 1f4dc-AC641.svg
├── 1f50d-195C0.svg
├── 1f50f-FB237.svg
├── 1f525-8FE4F.svg
├── 1f601-4E9BD.svg
├── 1f602-168C5.svg
├── 1f604-BF863.svg
├── 1f605-42B43.svg
├── 1f606-BE94E.svg
├── 1f60a-3283D.svg
├── 1f60e-FF6EB.svg
├── 1f622-BDD22.svg
├── 1f636-300DD.svg
├── 1f642-83E8A.svg
├── 1f64f-22B8D.svg
├── 1f680-A35CE.svg
├── 1f6a8-A8AB3.svg
├── 1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png
├── 1f911-F346C.svg
├── 1f914-15707.svg
├── 1f923-5854E.svg
├── 1f92f-FF4E0.svg
├── 1f9d0-3E117.svg
├── 1f9d1-5BC80.svg
├── 1fae1-B19DE.svg
├── 2-ADBB4.png
├── 258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png
├── 25d1d9d8d339f4258368c0359932dd5e-1C630.png
├── 2696-15F4A.svg
├── 2705-0589F.svg
├── 2795-3358E.svg
├── 2a9faff195fe333526cfe6ae6fce1420-49B98.png
├── 2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png
├── 2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png
├── 2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png
├── 3-FB033.png
├── 37254c70d1f43924aab295c5f32a33ab-FAE53.png
├── 37745f5520f15b2d5e24f7cd11118290-87C96.png
├── 3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png
├── 4053316a000ef470965c629e7aacad9a-3BB48.png
├── 40faf496db7b4bbcab37bc04b134567d-EFC50.png
├── 453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png
├── 462cefe91b8bf4ec13a78693bb4d942f-B6659.png
├── 472e8696c1d575b51208a8571994c6bf-B0333.png
├── 48cdf35ad6a1abcf335e556af8087774-4AD25.png
├── 5-E9BDB.png
├── 51cc6faa390844056c24ea26c654003a-E2C26.png
├── 591e68a648a7b28f8c1990efe1528761-F96F5.png
├── 593f36e88b1657d978d620f5152eca82-52AEA.png
├── 5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png
├── 6094e48ab77eb87fae4e3348c0d872b4-34FEF.png
├── 631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F
├── 6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png
├── 652c9b82f43282f85423f844ca26d6b4-F9AB0.png
├── 65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png
├── 66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png
├── 67594ee4b4d1fc03bca468327a0d145b-BD76A.png
├── 675b226a2239369c985cd538027c7c52-40875.png
├── 6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png
├── 6b084fd00f226a77abcf31000a85623e-5C817.png
├── 6cdf4b32a5a3932260b03982bb21b3c6-297C6.png
├── 6ff1e65c0976fd9df6010502da72f911-D2FA0.png
├── 701300a5bdd3bf5640bd1370251533e2-0DC47.png
├── 73c29465f45b5724-B024C.png
├── 751f210cd76b9b17316bb54ff939887b-0B021.png
├── 756596661307965461-B1D91.png
├── 783788733987815434-C3BF7.json
├── 7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png
├── 7be22dfd3e29e541eda121ff0ee73256-B7E2E.png
├── 7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png
├── 7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png
├── 7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png
├── 80b63b8eef8e8e0bef63af4cd4598430-39256.png
├── 83fa622da18abee1baf881ee7d3dd8da-76C8A.png
├── 8441d5e9fe1fd4c074797db4578a0b54-66B22.png
├── 851893826846457866-1AD3D.png
├── 851893827027075142-F23DF.png
├── 851893827089727568-5FD38.png
├── 851893827315826708-F59C0.png
├── 851893828280909886-FBF42.png
├── 860bc8415fcb344bebcf89a301158ffd-36A89.png
├── 8646f8b4f073429bf27df27459ab18a2-F6800.png
├── 886f35a505c4042e51de62b1e7c30fa5-EC7E7.png
├── 8c6129305f7cfbc60d0e2c052bc22211-CC381.png
├── 910676187288846397-518CD.png
├── 92719dd7bc8cb77c2a6b6813ef47a830-56832.png
├── 934055812859856cd87c3c397ccb56bd-064C4.png
├── 951505379299311799-78C6C.gif
├── 951506091798327316-7578A.png
├── 970d2e2f00cd7ef2134a1a3f21326349-404EA.png
├── 977133670429261884-CA8EA.png
├── 9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png
├── 9bf2181404e658cab4039c07df56213f-E3E89.png
├── 9d005f28252054a605d1563bbb94db61-C6F53.png
├── Screenshot_2023-10-14_07-05-50-95B4B.png
├── a-373CA.png
├── a0457d118b6579a0106b86d86660fd78-D29A1.png
├── a11be1743d960d9d0807e6529db84028-375E9.png
├── a6700d776b9feae9a8825a05eb056151-9CE8A.png
├── a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png
├── aa3584c2ce5b338f4758e69aec19637c-72010.png
├── aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png
├── ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png
├── adddc7313b30a4e8b5329894bf2034ab-5B4E5.png
├── af47db264f598a776eef080a2c7aee22-4D508.png
├── apple-touch-icon%402-EBA58.png
├── b30d26b226234841286fe01dbf9e98da-3EB14.png
├── b35ccff921a31a8e868c330e5d401246-C4BC6.png
├── b4d325ccda484b98fb07c2586ae5f970-64C08.png
├── b4fead77f737aa7840a25e1cd39eb062-CEDEC.png
├── b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png
├── b70570b512f4bae5ddf0357c48b48b22-D1D5C.png
├── bae3fdb74ed49558a4cd0636132b6776-75EEB.png
├── bdd37d345b2d35b5513f03a81143aa4a-51209.png
├── c2704939e6436659b126caadce6bf20f-80CE2.png
├── c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png
├── c4-og-banner-20E67.png
├── c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png
├── c616e441e02fbf7f8f4594b17761c02c-768C2.png
├── c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png
├── c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png
├── c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png
├── c9cb30134c634c9e02d0c64df4922803-98E33.png
├── card-E9D38.png
├── d35a0c87f7f9f5e7c67430ca9593af01-64365.png
├── dc6e0072c993da12b699bb569417b6d1-25F7D.png
├── dd0b02132544c612d48d10270e412d9b-9486F.png
├── df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png
├── e13420cb45f97860245c8425af03e2fb-87D5F.png
├── e9472a11f41d425badda92e53fc91864-F560D.png
├── e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png
├── ec283548018391e9a25a61215bd46007-2D6CA.png
├── ed4484ef66c898526d51a3b65936c2ff-6B4AE.png
├── f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png
├── f4422c70568695907d5aa7f8632b4d51-4FBE2.png
├── ggsans-italic-400-E988B.woff2
├── ggsans-italic-500-0777F.woff2
├── ggsans-italic-600-CB411.woff2
├── ggsans-italic-700-891AC.woff2
├── ggsans-italic-800-D36B0.woff2
├── ggsans-normal-400-1456D.woff2
├── ggsans-normal-500-89CE5.woff2
├── ggsans-normal-600-C1EA8.woff2
├── ggsans-normal-700-1949A.woff2
├── ggsans-normal-800-58487.woff2
├── hasbulla-money-0551F.mp4
├── highlight.min-D8D27.js
├── image-1CF31.png
├── image-216BC.png
├── image-42DBD.png
├── image-5204D.png
├── image-57CC8.png
├── image-67E04.png
├── image-68CA4.png
├── image-6F0E0.png
├── image-91C78.png
├── image-A2D2A.png
├── image-A438B.png
├── image-AE099.png
├── james-franco-wait-what-AA6B1.mp4
├── lfg-lets-E1782.mp4
├── lottie.min-99657.js
├── rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg
├── safe-contracts-EDE24
└── solarized-dark.min-BA98F.css
├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt
└── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files
├── 631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F
├── 73c29465f45b5724-B024C.png
├── 783788733987815434-C3BF7.json
├── Screenshot_2023-10-14_07-05-50-95B4B.png
├── a-373CA.png
├── apple-touch-icon%402-EBA58.png
├── c4-og-banner-20E67.png
├── card-E9D38.png
├── hasbulla-money-22B63.png
├── image-1CF31.png
├── image-216BC.png
├── image-42DBD.png
├── image-5204D.png
├── image-57CC8.png
├── image-67E04.png
├── image-68CA4.png
├── image-6F0E0.png
├── image-91C78.png
├── image-A2D2A.png
├── image-A438B.png
├── image-AE099.png
├── james-franco-wait-what-DE3DF.png
├── lfg-lets-5E020.png
├── rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg
└── safe-contracts-EDE24
/contracts/.env.example:
--------------------------------------------------------------------------------
1 | MAINNET_RPC=********
2 | MAINNET_BLOCK=`any recent block`
3 | ALCHEMY_API_KEY=********
--------------------------------------------------------------------------------
/contracts/.gitignore:
--------------------------------------------------------------------------------
1 | # Compilation
2 | cache/
3 | out/
4 | cache_hardhat/
5 | broadcast/
6 | artifacts/
7 | typechain-types/
8 | .compiler-configs/
9 |
10 | # Deps
11 | node_modules/
12 |
13 | # Forge
14 | .gas-snapshot
15 |
16 | # Slither
17 | slither.md
18 | slither.sarif
19 | report/
20 | lcov.info
21 |
22 | # Deployments
23 | verification_json/
24 | flatten/
25 |
26 | # Secrets
27 | .env
28 | .DS_Store
--------------------------------------------------------------------------------
/contracts/.gitmodules:
--------------------------------------------------------------------------------
1 |
2 | [submodule "lib/forge-std"]
3 | path = lib/forge-std
4 | url = https://github.com/foundry-rs/forge-std
5 | [submodule "lib/openzeppelin-contracts"]
6 | path = lib/openzeppelin-contracts
7 | url = https://github.com/openzeppelin/openzeppelin-contracts
8 | [submodule "lib/solady"]
9 | path = lib/solady
10 | url = https://github.com/vectorized/solady
11 | [submodule "lib/safe-contracts"]
12 | path = lib/safe-contracts
13 | url = https://github.com/safe-global/safe-contracts
14 |
--------------------------------------------------------------------------------
/contracts/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | bracketSpacing: false,
3 | singleQuote: false,
4 | trailingComma: "all",
5 | semi: true,
6 | tabWidth: 4
7 | };
--------------------------------------------------------------------------------
/contracts/.solhint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "solhint:recommended",
3 | "rules": {
4 | "func-visibility": [
5 | "warn",
6 | {
7 | "ignoreConstructors": true
8 | }
9 | ]
10 | }
11 | }
--------------------------------------------------------------------------------
/contracts/.solhintignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | test/
--------------------------------------------------------------------------------
/contracts/docs/images/Sub-account execution flow via console account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/Sub-account execution flow via console account.png
--------------------------------------------------------------------------------
/contracts/docs/images/Sub-account execution flow via executor plugin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/Sub-account execution flow via executor plugin.png
--------------------------------------------------------------------------------
/contracts/docs/images/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/banner.png
--------------------------------------------------------------------------------
/contracts/docs/images/console account execTransaction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/console account execTransaction.png
--------------------------------------------------------------------------------
/contracts/docs/images/console-guard-removal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/console-guard-removal.png
--------------------------------------------------------------------------------
/contracts/docs/images/sub-account execTransaction by operators.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/sub-account execTransaction by operators.png
--------------------------------------------------------------------------------
/contracts/interfaces/IAddressProviderService.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: BUSL-1.1
2 | pragma solidity 0.8.19;
3 |
4 | interface IAddressProviderService {
5 | /// @notice Returns the address of the AddressProvider
6 | function addressProviderTarget() external view returns (address);
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/interfaces/IWalletAdapter.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: BUSL-1.1
2 | pragma solidity 0.8.19;
3 |
4 | import "../interfaces/Types.sol";
5 |
6 | interface IWalletAdapter is Types {
7 | function id() external view returns (uint8);
8 |
9 | function formatForWallet(address _wallet, Types.Executable memory _txn)
10 | external
11 | view
12 | returns (Types.Executable memory);
13 |
14 | function isAuthorized(address _wallet, address _user) external view returns (bool);
15 |
16 | function decodeReturnData(bytes memory data) external view returns (bool success, bytes memory returnData);
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/interfaces/Types.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: BUSL-1.1
2 | pragma solidity 0.8.19;
3 |
4 | interface Types {
5 | enum CallType {
6 | CALL,
7 | DELEGATECALL,
8 | STATICCALL
9 | }
10 |
11 | struct Executable {
12 | CallType callType;
13 | address target;
14 | uint256 value;
15 | bytes data;
16 | }
17 |
18 | struct TokenRequest {
19 | address token;
20 | uint256 amount;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/contracts/interfaces/external/IGnosisMultiSend.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | interface IGnosisMultiSend {
5 | function multiSend(bytes memory transactions) external payable;
6 | }
7 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/.gitignore:
--------------------------------------------------------------------------------
1 | cache/
2 | out/
3 | .vscode
4 | .idea
5 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lib/ds-test"]
2 | path = lib/ds-test
3 | url = https://github.com/dapphub/ds-test
4 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/lib/ds-test/.gitignore:
--------------------------------------------------------------------------------
1 | /.dapple
2 | /build
3 | /out
4 | /cache/
5 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/lib/ds-test/Makefile:
--------------------------------------------------------------------------------
1 | all:; dapp build
2 |
3 | test:
4 | -dapp --use solc:0.4.23 build
5 | -dapp --use solc:0.4.26 build
6 | -dapp --use solc:0.5.17 build
7 | -dapp --use solc:0.6.12 build
8 | -dapp --use solc:0.7.5 build
9 |
10 | demo:
11 | DAPP_SRC=demo dapp --use solc:0.7.5 build
12 | -hevm dapp-test --verbose 3
13 |
14 | .PHONY: test demo
15 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/lib/ds-test/default.nix:
--------------------------------------------------------------------------------
1 | { solidityPackage, dappsys }: solidityPackage {
2 | name = "ds-test";
3 | src = ./src;
4 | }
5 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/lib/ds-test/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ds-test",
3 | "version": "1.0.0",
4 | "description": "Assertions, equality checks and other test helpers ",
5 | "bugs": "https://github.com/dapphub/ds-test/issues",
6 | "license": "GPL-3.0",
7 | "author": "Contributors to ds-test",
8 | "files": [
9 | "src/*"
10 | ],
11 | "repository": {
12 | "type": "git",
13 | "url": "https://github.com/dapphub/ds-test.git"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "forge-std",
3 | "version": "1.6.0",
4 | "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.",
5 | "homepage": "https://book.getfoundry.sh/forge/forge-std",
6 | "bugs": "https://github.com/foundry-rs/forge-std/issues",
7 | "license": "(Apache-2.0 OR MIT)",
8 | "author": "Contributors to Forge Standard Library",
9 | "files": [
10 | "src/**/*"
11 | ],
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/foundry-rs/forge-std.git"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/src/interfaces/IERC165.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2;
3 |
4 | interface IERC165 {
5 | /// @notice Query if a contract implements an interface
6 | /// @param interfaceID The interface identifier, as specified in ERC-165
7 | /// @dev Interface identification is specified in ERC-165. This function
8 | /// uses less than 30,000 gas.
9 | /// @return `true` if the contract implements `interfaceID` and
10 | /// `interfaceID` is not 0xffffffff, `false` otherwise
11 | function supportsInterface(bytes4 interfaceID) external view returns (bool);
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/test/compilation/CompilationScript.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Script.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationScript is Script {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Script.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationScriptBase is ScriptBase {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/test/compilation/CompilationTest.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Test.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationTest is Test {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/forge-std/test/compilation/CompilationTestBase.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Test.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationTestBase is TestBase {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
3 | "changelog": [
4 | "@changesets/changelog-github",
5 | {
6 | "repo": "OpenZeppelin/openzeppelin-contracts"
7 | }
8 | ],
9 | "commit": false,
10 | "access": "public",
11 | "baseBranch": "master"
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.codecov.yml:
--------------------------------------------------------------------------------
1 | comment: off
2 | github_checks:
3 | annotations: false
4 | coverage:
5 | status:
6 | patch:
7 | default:
8 | target: 95%
9 | only_pulls: true
10 | project:
11 | default:
12 | threshold: 1%
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | [*]
7 | charset = utf-8
8 | end_of_line = lf
9 | indent_style = space
10 | insert_final_newline = true
11 | trim_trailing_whitespace = false
12 | max_line_length = 120
13 |
14 | [*.sol]
15 | indent_size = 4
16 |
17 | [*.js]
18 | indent_size = 2
19 |
20 | [*.{adoc,md}]
21 | max_line_length = 0
22 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "extends" : [
4 | "eslint:recommended",
5 | "prettier",
6 | ],
7 | "env": {
8 | "es2022": true,
9 | "browser": true,
10 | "node": true,
11 | "mocha": true,
12 | },
13 | "globals" : {
14 | "artifacts": "readonly",
15 | "contract": "readonly",
16 | "web3": "readonly",
17 | "extendEnvironment": "readonly",
18 | "expect": "readonly",
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | contact_links:
2 | - name: Questions & Support Requests
3 | url: https://forum.openzeppelin.com/c/support/contracts/18
4 | about: Ask in the OpenZeppelin Forum
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for OpenZeppelin Contracts
4 |
5 | ---
6 |
7 | **🧐 Motivation**
8 |
9 |
10 | **📝 Details**
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.github/actions/setup/action.yml:
--------------------------------------------------------------------------------
1 | name: Setup
2 |
3 | runs:
4 | using: composite
5 | steps:
6 | - uses: actions/setup-node@v3
7 | with:
8 | node-version: 14.x
9 | - uses: actions/cache@v3
10 | id: cache
11 | with:
12 | path: '**/node_modules'
13 | key: npm-v3-${{ hashFiles('**/package-lock.json') }}
14 | - name: Install dependencies
15 | run: npm ci
16 | shell: bash
17 | if: steps.cache.outputs.cache-hit != 'true'
18 | env:
19 | SKIP_COMPILE: true
20 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.github/workflows/actionlint.yml:
--------------------------------------------------------------------------------
1 | name: lint workflows
2 |
3 | on:
4 | pull_request:
5 | paths:
6 | - '.github/**/*.ya?ml'
7 |
8 | jobs:
9 | lint:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - name: Add problem matchers
14 | run: |
15 | # https://github.com/rhysd/actionlint/blob/3a2f2c7/docs/usage.md#problem-matchers
16 | curl -LO https://raw.githubusercontent.com/rhysd/actionlint/main/.github/actionlint-matcher.json
17 | echo "::add-matcher::actionlint-matcher.json"
18 | - uses: docker://rhysd/actionlint:latest
19 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.github/workflows/docs.yml:
--------------------------------------------------------------------------------
1 | name: Build Docs
2 |
3 | on:
4 | push:
5 | branches: [release-v*]
6 |
7 | permissions:
8 | contents: write
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v3
15 | - name: Set up environment
16 | uses: ./.github/actions/setup
17 | - run: bash scripts/git-user-config.sh
18 | - run: node scripts/update-docs-branch.js
19 | - run: git push --all origin
20 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lib/forge-std"]
2 | branch = v1
3 | path = lib/forge-std
4 | url = https://github.com/foundry-rs/forge-std
5 | [submodule "lib/erc4626-tests"]
6 | path = lib/erc4626-tests
7 | url = https://github.com/a16z/erc4626-tests.git
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.mocharc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | require: 'hardhat/register',
3 | timeout: 4000,
4 | };
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 120,
3 | "singleQuote": true,
4 | "trailingComma": "all",
5 | "arrowParens": "avoid",
6 | "overrides": [
7 | {
8 | "files": "*.sol",
9 | "options": {
10 | "singleQuote": false
11 | }
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.solcover.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | norpc: true,
3 | testCommand: 'npm test',
4 | compileCommand: 'npm run compile',
5 | skipFiles: ['mocks'],
6 | providerOptions: {
7 | default_balance_ether: '10000000000000000000000000',
8 | },
9 | mocha: {
10 | fgrep: '[skip-on-coverage]',
11 | invert: true,
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/.solhint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "no-unused-vars": "error",
4 | "const-name-snakecase": "error",
5 | "contract-name-camelcase": "error",
6 | "event-name-camelcase": "error",
7 | "func-name-mixedcase": "error",
8 | "func-param-name-mixedcase": "error",
9 | "modifier-name-mixedcase": "error",
10 | "private-vars-leading-underscore": "error",
11 | "var-name-mixedcase": "error",
12 | "imports-on-top": "error"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/audits/2018-10.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2018-10.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/.gitignore:
--------------------------------------------------------------------------------
1 | patched
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/diff/token_ERC721_ERC721.sol.patch:
--------------------------------------------------------------------------------
1 | --- token/ERC721/ERC721.sol 2023-03-07 10:48:47.736822221 +0100
2 | +++ token/ERC721/ERC721.sol 2023-03-09 19:49:39.669338673 +0100
3 | @@ -199,6 +199,11 @@
4 | return _owners[tokenId];
5 | }
6 |
7 | + // FV
8 | + function _getApproved(uint256 tokenId) internal view returns (address) {
9 | + return _tokenApprovals[tokenId];
10 | + }
11 | +
12 | /**
13 | * @dev Returns whether `tokenId` exists.
14 | *
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/access/AccessControl.sol";
6 |
7 | contract AccessControlHarness is AccessControl {}
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/token/ERC20/extensions/ERC20Permit.sol";
6 |
7 | contract ERC20PermitHarness is ERC20Permit {
8 | constructor(string memory name, string memory symbol) ERC20(name, symbol) ERC20Permit(name) {}
9 |
10 | function mint(address account, uint256 amount) external {
11 | _mint(account, amount);
12 | }
13 |
14 | function burn(address account, uint256 amount) external {
15 | _burn(account, amount);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | import "../patched/interfaces/IERC3156FlashBorrower.sol";
4 |
5 | pragma solidity ^0.8.0;
6 |
7 | contract ERC3156FlashBorrowerHarness is IERC3156FlashBorrower {
8 | bytes32 somethingToReturn;
9 |
10 | function onFlashLoan(address, address, uint256, uint256, bytes calldata) external view override returns (bytes32) {
11 | return somethingToReturn;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/interfaces/IERC721Receiver.sol";
6 |
7 | contract ERC721ReceiverHarness is IERC721Receiver {
8 | function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {
9 | return this.onERC721Received.selector;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/access/Ownable2Step.sol";
6 |
7 | contract Ownable2StepHarness is Ownable2Step {
8 | function restricted() external onlyOwner {}
9 | }
10 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/access/Ownable.sol";
6 |
7 | contract OwnableHarness is Ownable {
8 | function restricted() external onlyOwner {}
9 | }
10 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../patched/security/Pausable.sol";
6 |
7 | contract PausableHarness is Pausable {
8 | function pause() external {
9 | _pause();
10 | }
11 |
12 | function unpause() external {
13 | _unpause();
14 | }
15 |
16 | function onlyWhenPaused() external whenPaused {}
17 |
18 | function onlyWhenNotPaused() external whenNotPaused {}
19 | }
20 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.8.0;
2 |
3 | import "../patched/governance/TimelockController.sol";
4 |
5 | contract TimelockControllerHarness is TimelockController {
6 | constructor(
7 | uint256 minDelay,
8 | address[] memory proposers,
9 | address[] memory executors,
10 | address admin
11 | ) TimelockController(minDelay, proposers, executors, admin) {}
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec:
--------------------------------------------------------------------------------
1 | definition nonpayable(env e) returns bool = e.msg.value == 0;
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | hasRole(bytes32, address) returns(bool) envfree
3 | getRoleAdmin(bytes32) returns(bytes32) envfree
4 | grantRole(bytes32, address)
5 | revokeRole(bytes32, address)
6 | renounceRole(bytes32, address)
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | permit(address,address,uint256,uint256,uint8,bytes32,bytes32) => DISPATCHER(true)
3 | nonces(address) returns (uint256) envfree => DISPATCHER(true)
4 | DOMAIN_SEPARATOR() returns (bytes32) envfree => DISPATCHER(true)
5 | }
6 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC3156.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | maxFlashLoan(address) returns (uint256) envfree => DISPATCHER(true)
3 | flashFee(address,uint256) returns (uint256) envfree => DISPATCHER(true)
4 | flashLoan(address,address,uint256,bytes) returns (bool) => DISPATCHER(true)
5 | }
6 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | owner() returns (address) envfree
3 | }
4 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | owner() returns (address) envfree
3 | transferOwnership(address)
4 | renounceOwnership()
5 | }
6 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec:
--------------------------------------------------------------------------------
1 | methods {
2 | owner() returns (address) envfree
3 | pendingOwner() returns (address) envfree
4 | transferOwnership(address)
5 | acceptOwnership()
6 | renounceOwnership()
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/crosschain/errors.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.6.0) (crosschain/errors.sol)
3 |
4 | pragma solidity ^0.8.4;
5 |
6 | error NotCrossChainCall();
7 | error InvalidCrossChainSender(address actual, address expected);
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC1155/IERC1155.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155MetadataURI.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC1155/extensions/IERC1155MetadataURI.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155Receiver.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC1155/IERC1155Receiver.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../utils/introspection/IERC165.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1820Implementer.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../utils/introspection/IERC1820Implementer.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1820Registry.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../utils/introspection/IERC1820Registry.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC20/IERC20.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20Metadata.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC20/extensions/IERC20Metadata.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.8.0) (interfaces/IERC2309.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | /**
7 | * @dev ERC-2309: ERC-721 Consecutive Transfer Extension.
8 | *
9 | * _Available since v4.8._
10 | */
11 | interface IERC2309 {
12 | /**
13 | * @dev Emitted when the tokens from `fromTokenId` to `toTokenId` are transferred from `fromAddress` to `toAddress`.
14 | */
15 | event ConsecutiveTransfer(
16 | uint256 indexed fromTokenId,
17 | uint256 toTokenId,
18 | address indexed fromAddress,
19 | address indexed toAddress
20 | );
21 | }
22 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC2612.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC20/extensions/IERC20Permit.sol";
7 |
8 | interface IERC2612 is IERC20Permit {}
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC3156.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "./IERC3156FlashBorrower.sol";
7 | import "./IERC3156FlashLender.sol";
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5313.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | /**
7 | * @dev Interface for the Light Contract Ownership Standard.
8 | *
9 | * A standardized minimal interface required to identify an account that controls a contract
10 | *
11 | * _Available since v4.9._
12 | */
13 | interface IERC5313 {
14 | /**
15 | * @dev Gets the address of the owner.
16 | */
17 | function owner() external view returns (address);
18 | }
19 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5805.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../governance/utils/IVotes.sol";
7 | import "./IERC6372.sol";
8 |
9 | interface IERC5805 is IERC6372, IVotes {}
10 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC6372.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | interface IERC6372 {
7 | /**
8 | * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).
9 | */
10 | function clock() external view returns (uint48);
11 |
12 | /**
13 | * @dev Description of the clock
14 | */
15 | // solhint-disable-next-line func-name-mixedcase
16 | function CLOCK_MODE() external view returns (string memory);
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC721/IERC721.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Enumerable.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC721/extensions/IERC721Enumerable.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Metadata.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC721/extensions/IERC721Metadata.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Receiver.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC721/IERC721Receiver.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC777/IERC777.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777Recipient.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC777/IERC777Recipient.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777Sender.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | import "../token/ERC777/IERC777Sender.sol";
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC2612.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/draft-IERC2612.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated.
7 |
8 | import "./IERC2612.sol";
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/metatx/README.adoc:
--------------------------------------------------------------------------------
1 | = Meta Transactions
2 |
3 | [.readme-notice]
4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/metatx
5 |
6 | == Core
7 |
8 | {{ERC2771Context}}
9 |
10 | == Utils
11 |
12 | {{MinimalForwarder}}
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/AccessControlCrossChainMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.4;
4 |
5 | import "../access/AccessControlCrossChain.sol";
6 | import "../crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol";
7 |
8 | contract AccessControlCrossChainMock is AccessControlCrossChain, CrossChainEnabledArbitrumL2 {}
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ConditionalEscrowMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../utils/escrow/ConditionalEscrow.sol";
6 |
7 | // mock class using ConditionalEscrow
8 | contract ConditionalEscrowMock is ConditionalEscrow {
9 | mapping(address => bool) private _allowed;
10 |
11 | function setAllowed(address payee, bool allowed) public {
12 | _allowed[payee] = allowed;
13 | }
14 |
15 | function withdrawalAllowed(address payee) public view override returns (bool) {
16 | return _allowed[payee];
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract ERC165MaliciousData {
6 | function supportsInterface(bytes4) public pure returns (bool) {
7 | assembly {
8 | mstore(0, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
9 | return(0, 32)
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract ERC165MissingData {
6 | function supportsInterface(bytes4 interfaceId) public view {} // missing return
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract ERC165NotSupported {}
6 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../utils/introspection/IERC165.sol";
6 |
7 | contract ERC165ReturnBombMock is IERC165 {
8 | function supportsInterface(bytes4 interfaceId) public pure override returns (bool) {
9 | if (interfaceId == type(IERC165).interfaceId) {
10 | assembly {
11 | mstore(0, 1)
12 | }
13 | }
14 | assembly {
15 | return(0, 101500)
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.0;
3 |
4 | import {ERC20} from "../token/ERC20/ERC20.sol";
5 |
6 | contract ERC20Mock is ERC20 {
7 | constructor() ERC20("ERC20Mock", "E20M") {}
8 |
9 | function mint(address account, uint256 amount) external {
10 | _mint(account, amount);
11 | }
12 |
13 | function burn(address account, uint256 amount) external {
14 | _burn(account, amount);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.0;
3 |
4 | import "../token/ERC20/extensions/ERC4626.sol";
5 |
6 | contract ERC4626Mock is ERC4626 {
7 | constructor(address underlying) ERC20("ERC4626Mock", "E4626M") ERC4626(IERC20(underlying)) {}
8 |
9 | function mint(address account, uint256 amount) external {
10 | _mint(account, amount);
11 | }
12 |
13 | function burn(address account, uint256 amount) external {
14 | _burn(account, amount);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract EtherReceiverMock {
6 | bool private _acceptEther;
7 |
8 | function setAcceptEther(bool acceptEther) public {
9 | _acceptEther = acceptEther;
10 | }
11 |
12 | receive() external payable {
13 | if (!_acceptEther) {
14 | revert();
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/PullPaymentMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../security/PullPayment.sol";
6 |
7 | // mock class using PullPayment
8 | contract PullPaymentMock is PullPayment {
9 | constructor() payable {}
10 |
11 | // test helper function to call asyncTransfer
12 | function callTransfer(address dest, uint256 amount) public {
13 | _asyncTransfer(dest, amount);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../utils/Context.sol";
6 |
7 | contract ReentrancyAttack is Context {
8 | function callSender(bytes4 data) public {
9 | (bool success, ) = _msgSender().call(abi.encodeWithSelector(data));
10 | require(success, "ReentrancyAttack: failed call");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../governance/extensions/GovernorCountingSimple.sol";
6 | import "../../governance/extensions/GovernorVotes.sol";
7 |
8 | abstract contract GovernorVoteMocks is GovernorVotes, GovernorCountingSimple {
9 | function quorum(uint256) public pure override returns (uint256) {
10 | return 0;
11 | }
12 |
13 | function votingDelay() public pure override returns (uint256) {
14 | return 4;
15 | }
16 |
17 | function votingPeriod() public pure override returns (uint256) {
18 | return 16;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract BadBeaconNoImpl {}
6 |
7 | contract BadBeaconNotContract {
8 | function implementation() external pure returns (address) {
9 | return address(0x1);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | /**
6 | * @dev Implementation contract with a payable admin() function made to clash with TransparentUpgradeableProxy's to
7 | * test correct functioning of the Transparent Proxy feature.
8 | */
9 | contract ClashingImplementation {
10 | function admin() external payable returns (address) {
11 | return 0x0000000000000000000000000000000011111142;
12 | }
13 |
14 | function delegatedFunction() external pure returns (bool) {
15 | return true;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC20/ERC20.sol";
6 |
7 | abstract contract ERC20DecimalsMock is ERC20 {
8 | uint8 private immutable _decimals;
9 |
10 | constructor(uint8 decimals_) {
11 | _decimals = decimals_;
12 | }
13 |
14 | function decimals() public view override returns (uint8) {
15 | return _decimals;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | contract ERC20ExcessDecimalsMock {
6 | function decimals() public pure returns (uint256) {
7 | return type(uint256).max;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC20/ERC20.sol";
6 |
7 | // contract that replicate USDT (0xdac17f958d2ee523a2206206994597c13d831ec7) approval beavior
8 | abstract contract ERC20ForceApproveMock is ERC20 {
9 | function approve(address spender, uint256 amount) public virtual override returns (bool) {
10 | require(amount == 0 || allowance(msg.sender, spender) == 0, "USDT approval failure");
11 | return super.approve(spender, amount);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC20/ERC20.sol";
6 | import "../../utils/Multicall.sol";
7 |
8 | abstract contract ERC20MulticallMock is ERC20, Multicall {}
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC20/ERC20.sol";
6 |
7 | abstract contract ERC20ReturnFalseMock is ERC20 {
8 | function transfer(address, uint256) public pure override returns (bool) {
9 | return false;
10 | }
11 |
12 | function transferFrom(address, address, uint256) public pure override returns (bool) {
13 | return false;
14 | }
15 |
16 | function approve(address, uint256) public pure override returns (bool) {
17 | return false;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC20/extensions/ERC4626.sol";
6 |
7 | abstract contract ERC4626OffsetMock is ERC4626 {
8 | uint8 private immutable _offset;
9 |
10 | constructor(uint8 offset_) {
11 | _offset = offset_;
12 | }
13 |
14 | function _decimalsOffset() internal view virtual override returns (uint8) {
15 | return _offset;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC721/extensions/ERC721URIStorage.sol";
6 |
7 | abstract contract ERC721URIStorageMock is ERC721URIStorage {
8 | string private _baseTokenURI;
9 |
10 | function _baseURI() internal view virtual override returns (string memory) {
11 | return _baseTokenURI;
12 | }
13 |
14 | function setBaseURI(string calldata newBaseTokenURI) public {
15 | _baseTokenURI = newBaseTokenURI;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777Mock.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 |
3 | pragma solidity ^0.8.0;
4 |
5 | import "../../token/ERC777/ERC777.sol";
6 |
7 | abstract contract ERC777Mock is ERC777 {
8 | event BeforeTokenTransfer();
9 |
10 | function _beforeTokenTransfer(address, address, address, uint256) internal override {
11 | emit BeforeTokenTransfer();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | /**
7 | * @dev This is the interface that {BeaconProxy} expects of its beacon.
8 | */
9 | interface IBeacon {
10 | /**
11 | * @dev Must return an address that can be used as a delegate call target.
12 | *
13 | * {BeaconProxy} will check that this address is a contract.
14 | */
15 | function implementation() external view returns (address);
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/README.md:
--------------------------------------------------------------------------------
1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative.
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/draft-ERC20Permit.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated.
7 |
8 | import "./ERC20Permit.sol";
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/draft-IERC20Permit.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated.
7 |
8 | import "./IERC20Permit.sol";
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/README.md:
--------------------------------------------------------------------------------
1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative.
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/draft-ERC721Votes.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/draft-ERC721Votes.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | // ERC721Votes was marked as draft due to the EIP-712 dependency.
7 | // EIP-712 is Final as of 2022-08-11. This file is deprecated.
8 |
9 | import "./ERC721Votes.sol";
10 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/README.md:
--------------------------------------------------------------------------------
1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative.
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/token/common/README.adoc:
--------------------------------------------------------------------------------
1 | = Common (Tokens)
2 |
3 | Functionality that is common to multiple token standards.
4 |
5 | * {ERC2981}: NFT Royalties compatible with both ERC721 and ERC1155.
6 | ** For ERC721 consider {ERC721Royalty} which clears the royalty information from storage on burn.
7 |
8 | == Contracts
9 |
10 | {{ERC2981}}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/draft-EIP712.sol)
3 |
4 | pragma solidity ^0.8.0;
5 |
6 | // EIP-712 is Final as of 2022-08-11. This file is deprecated.
7 |
8 | import "./EIP712.sol";
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/contracts/vendor/polygon/IFxMessageProcessor.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | // OpenZeppelin Contracts (last updated v4.9.0) (vendor/polygon/IFxMessageProcessor.sol)
3 | pragma solidity ^0.8.0;
4 |
5 | interface IFxMessageProcessor {
6 | function processMessageFromRoot(uint256 stateId, address rootMessageSender, bytes calldata data) external;
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/antora.yml:
--------------------------------------------------------------------------------
1 | name: contracts
2 | title: Contracts
3 | version: 4.x
4 | nav:
5 | - modules/ROOT/nav.adoc
6 | - modules/api/nav.adoc
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc:
--------------------------------------------------------------------------------
1 | = Crowdsales
2 |
3 | All crowdsale-related contracts were removed from the OpenZeppelin Contracts library on the https://forum.openzeppelin.com/t/openzeppelin-contracts-v3-0-beta-release/2256[v3.0.0 release] due to both a decline in their usage and the complexity associated with migrating them to Solidity v0.6.
4 |
5 | They are however still available on the v2.5 release of OpenZeppelin Contracts, which you can install by running:
6 |
7 | ```console
8 | $ npm install @openzeppelin/contracts@v2.5
9 | ```
10 |
11 | Refer to the https://docs.openzeppelin.com/contracts/2.x/crowdsales[v2.x documentation] when working with them.
12 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/docs/templates/page.hbs:
--------------------------------------------------------------------------------
1 | :github-icon: pass:[]
2 | {{#with-prelude}}
3 | {{readme (readme-path)}}
4 | {{/with-prelude}}
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/foundry.toml:
--------------------------------------------------------------------------------
1 | [fuzz]
2 | runs = 10000
3 | max_test_rejects = 150000
4 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/hardhat/env-contract.js:
--------------------------------------------------------------------------------
1 | extendEnvironment(env => {
2 | const { contract } = env;
3 |
4 | env.contract = function (name, body) {
5 | // remove the default account from the accounts list used in tests, in order
6 | // to protect tests against accidentally passing due to the contract
7 | // deployer being used subsequently as function caller
8 | contract(name, accounts => body(accounts.slice(1)));
9 | };
10 | });
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js:
--------------------------------------------------------------------------------
1 | const { subtask } = require('hardhat/config');
2 | const { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } = require('hardhat/builtin-tasks/task-names');
3 |
4 | subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, __, runSuper) =>
5 | (await runSuper()).filter(path => !path.endsWith('.t.sol')),
6 | );
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/.gitignore:
--------------------------------------------------------------------------------
1 | cache/
2 | out/
3 | .vscode
4 | .idea
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lib/ds-test"]
2 | path = lib/ds-test
3 | url = https://github.com/dapphub/ds-test
4 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/.gitignore:
--------------------------------------------------------------------------------
1 | /.dapple
2 | /build
3 | /out
4 | /cache/
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/Makefile:
--------------------------------------------------------------------------------
1 | all:; dapp build
2 |
3 | test:
4 | -dapp --use solc:0.4.23 build
5 | -dapp --use solc:0.4.26 build
6 | -dapp --use solc:0.5.17 build
7 | -dapp --use solc:0.6.12 build
8 | -dapp --use solc:0.7.5 build
9 |
10 | demo:
11 | DAPP_SRC=demo dapp --use solc:0.7.5 build
12 | -hevm dapp-test --verbose 3
13 |
14 | .PHONY: test demo
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/default.nix:
--------------------------------------------------------------------------------
1 | { solidityPackage, dappsys }: solidityPackage {
2 | name = "ds-test";
3 | src = ./src;
4 | }
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ds-test",
3 | "version": "1.0.0",
4 | "description": "Assertions, equality checks and other test helpers ",
5 | "bugs": "https://github.com/dapphub/ds-test/issues",
6 | "license": "GPL-3.0",
7 | "author": "Contributors to ds-test",
8 | "files": [
9 | "src/*"
10 | ],
11 | "repository": {
12 | "type": "git",
13 | "url": "https://github.com/dapphub/ds-test.git"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "forge-std",
3 | "version": "1.5.0",
4 | "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.",
5 | "homepage": "https://book.getfoundry.sh/forge/forge-std",
6 | "bugs": "https://github.com/foundry-rs/forge-std/issues",
7 | "license": "(Apache-2.0 OR MIT)",
8 | "author": "Contributors to Forge Standard Library",
9 | "files": [
10 | "src/*"
11 | ],
12 | "repository": {
13 | "type": "git",
14 | "url": "https://github.com/foundry-rs/forge-std.git"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2;
3 |
4 | interface IERC165 {
5 | /// @notice Query if a contract implements an interface
6 | /// @param interfaceID The interface identifier, as specified in ERC-165
7 | /// @dev Interface identification is specified in ERC-165. This function
8 | /// uses less than 30,000 gas.
9 | /// @return `true` if the contract implements `interfaceID` and
10 | /// `interfaceID` is not 0xffffffff, `false` otherwise
11 | function supportsInterface(bytes4 interfaceID) external view returns (bool);
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Script.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationScript is Script {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Script.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationScriptBase is ScriptBase {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Test.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationTest is Test {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.2 <0.9.0;
3 |
4 | pragma experimental ABIEncoderV2;
5 |
6 | import "../../src/Test.sol";
7 |
8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
10 | contract CompilationTestBase is TestBase {}
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | command = "npm run docs"
3 | publish = "build/site"
4 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/remappings.txt:
--------------------------------------------------------------------------------
1 | openzeppelin/=contracts/
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["github>OpenZeppelin/configs"],
3 | "labels": ["ignore-changeset"]
4 | }
5 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/requirements.txt:
--------------------------------------------------------------------------------
1 | certora-cli==3.6.4
2 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/checks/generation.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | npm run generate
6 | git diff -R --exit-code
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/generate/format-lines.js:
--------------------------------------------------------------------------------
1 | function formatLines(...lines) {
2 | return [...indentEach(0, lines)].join('\n') + '\n';
3 | }
4 |
5 | function* indentEach(indent, lines) {
6 | for (const line of lines) {
7 | if (Array.isArray(line)) {
8 | yield* indentEach(indent + 1, line);
9 | } else {
10 | const padding = ' '.repeat(indent);
11 | yield* line.split('\n').map(subline => (subline === '' ? '' : padding + subline));
12 | }
13 | }
14 | }
15 |
16 | module.exports = formatLines;
17 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/git-user-config.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail -x
4 |
5 | git config user.name 'github-actions'
6 | git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
7 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/prepack.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 | shopt -s globstar
5 |
6 | # cross platform `mkdir -p`
7 | node -e 'fs.mkdirSync("build/contracts", { recursive: true })'
8 |
9 | cp artifacts/contracts/**/*.json build/contracts
10 | rm build/contracts/*.dbg.json
11 |
12 | node scripts/remove-ignored-artifacts.js
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/prepare-contracts-package.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # cd to the root of the repo
4 | cd "$(git rev-parse --show-toplevel)"
5 |
6 | # avoids re-compilation during publishing of both packages
7 | if [[ ! -v ALREADY_COMPILED ]]; then
8 | npm run clean
9 | npm run prepare
10 | npm run prepack
11 | fi
12 |
13 | cp README.md contracts/
14 | mkdir contracts/build contracts/build/contracts
15 | cp -r build/contracts/*.json contracts/build/contracts
16 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/prepare.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | if [ "${SKIP_COMPILE:-}" == true ]; then
6 | exit
7 | fi
8 |
9 | npm run clean
10 | env COMPILE_MODE=production npm run compile
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | // Synchronizes the version in contracts/package.json with the one in package.json.
4 | // This is run automatically when npm version is run.
5 |
6 | const fs = require('fs');
7 |
8 | setVersion('package.json', 'contracts/package.json');
9 |
10 | function setVersion(from, to) {
11 | const fromJson = JSON.parse(fs.readFileSync(from));
12 | const toJson = JSON.parse(fs.readFileSync(to));
13 | toJson.version = fromJson.version;
14 | fs.writeFileSync(to, JSON.stringify(toJson, null, 2) + '\n');
15 | }
16 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/version.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | changeset version
6 |
7 | scripts/release/format-changelog.js
8 | scripts/release/synchronize-versions.js
9 | scripts/release/update-comment.js
10 |
11 | oz-docs update-version
12 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | npx changeset pre exit rc
6 | git add .
7 | git commit -m "Exit release candidate"
8 | git push origin
9 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | CHECKSUMS="$RUNNER_TEMP/checksums.txt"
6 |
7 | # Extract tarball content into a tmp directory
8 | tar xf "$TARBALL" -C "$RUNNER_TEMP"
9 |
10 | # Move to extracted directory
11 | cd "$RUNNER_TEMP/package"
12 |
13 | # Checksum all Solidity files
14 | find . -type f -name "*.sol" | xargs shasum > "$CHECKSUMS"
15 |
16 | # Back to directory with git contents
17 | cd "$GITHUB_WORKSPACE/contracts"
18 |
19 | # Check against tarball contents
20 | shasum -c "$CHECKSUMS"
21 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | # Intentionally escape $ to avoid interpolation and writing the token to disk
6 | echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc
7 |
8 | # Actual publish
9 | npm publish "$TARBALL" --tag "$TAG"
10 |
11 | delete_tag() {
12 | PACKAGE_JSON_NAME="$(tar xfO "$TARBALL" package/package.json | jq -r .name)"
13 | npm dist-tag rm "$PACKAGE_JSON_NAME" "$1"
14 | }
15 |
16 | if [ "$TAG" = tmp ]; then
17 | delete_tag "$TAG"
18 | elif [ "$TAG" = latest ]; then
19 | delete_tag next
20 | fi
21 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js:
--------------------------------------------------------------------------------
1 | module.exports = ({ github, context }) =>
2 | github.rest.actions.createWorkflowDispatch({
3 | owner: context.repo.owner,
4 | repo: context.repo.repo,
5 | workflow_id: 'release-cycle.yml',
6 | ref: process.env.REF || process.env.GITHUB_REF_NAME,
7 | });
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")"
6 | PATCH="$DIRNAME/upgradeable.patch"
7 |
8 | error() {
9 | echo Error: "$*" >&2
10 | exit 1
11 | }
12 |
13 | if ! git diff-files --quiet ":!$PATCH" || ! git diff-index --quiet HEAD ":!$PATCH"; then
14 | error "Repository must have no staged or unstaged changes"
15 | fi
16 |
17 | if ! git apply -3 "$PATCH"; then
18 | error "Fix conflicts and run $DIRNAME/patch-save.sh"
19 | fi
20 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")"
6 | PATCH="$DIRNAME/upgradeable.patch"
7 |
8 | error() {
9 | echo Error: "$*" >&2
10 | exit 1
11 | }
12 |
13 | if ! git diff-files --quiet ":!$PATCH"; then
14 | error "Unstaged changes. Stage to include in patch or temporarily stash."
15 | fi
16 |
17 | git diff-index --cached --patch --output="$PATCH" HEAD
18 | git restore --staged --worktree ":!$PATCH"
19 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/TESTING.md:
--------------------------------------------------------------------------------
1 | ## Testing
2 |
3 | Unit test are critical to OpenZeppelin Contracts. They help ensure code quality and mitigate against security vulnerabilities. The directory structure within the `/test` directory corresponds to the `/contracts` directory.
4 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/access/AccessControl.test.js:
--------------------------------------------------------------------------------
1 | const { DEFAULT_ADMIN_ROLE, shouldBehaveLikeAccessControl } = require('./AccessControl.behavior.js');
2 |
3 | const AccessControl = artifacts.require('$AccessControl');
4 |
5 | contract('AccessControl', function (accounts) {
6 | beforeEach(async function () {
7 | this.accessControl = await AccessControl.new({ from: accounts[0] });
8 | await this.accessControl.$_grantRole(DEFAULT_ADMIN_ROLE, accounts[0]);
9 | });
10 |
11 | shouldBehaveLikeAccessControl('AccessControl', ...accounts);
12 | });
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/helpers/chainid.js:
--------------------------------------------------------------------------------
1 | const hre = require('hardhat');
2 |
3 | async function getChainId() {
4 | const chainIdHex = await hre.network.provider.send('eth_chainId', []);
5 | return new hre.web3.utils.BN(chainIdHex, 'hex');
6 | }
7 |
8 | module.exports = {
9 | getChainId,
10 | };
11 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/helpers/create2.js:
--------------------------------------------------------------------------------
1 | function computeCreate2Address(saltHex, bytecode, deployer) {
2 | return web3.utils.toChecksumAddress(
3 | `0x${web3.utils
4 | .sha3(`0x${['ff', deployer, saltHex, web3.utils.soliditySha3(bytecode)].map(x => x.replace(/0x/, '')).join('')}`)
5 | .slice(-40)}`,
6 | );
7 | }
8 |
9 | module.exports = {
10 | computeCreate2Address,
11 | };
12 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/helpers/enums.js:
--------------------------------------------------------------------------------
1 | const { BN } = require('@openzeppelin/test-helpers');
2 |
3 | function Enum(...options) {
4 | return Object.fromEntries(options.map((key, i) => [key, new BN(i)]));
5 | }
6 |
7 | module.exports = {
8 | Enum,
9 | ProposalState: Enum('Pending', 'Active', 'Canceled', 'Defeated', 'Succeeded', 'Queued', 'Expired', 'Executed'),
10 | VoteType: Enum('Against', 'For', 'Abstain'),
11 | Rounding: Enum('Down', 'Up', 'Zero'),
12 | };
13 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/helpers/map-values.js:
--------------------------------------------------------------------------------
1 | function mapValues(obj, fn) {
2 | return Object.fromEntries([...Object.entries(obj)].map(([k, v]) => [k, fn(v)]));
3 | }
4 |
5 | module.exports = {
6 | mapValues,
7 | };
8 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/helpers/time.js:
--------------------------------------------------------------------------------
1 | const ozHelpers = require('@openzeppelin/test-helpers');
2 | const helpers = require('@nomicfoundation/hardhat-network-helpers');
3 |
4 | module.exports = {
5 | clock: {
6 | blocknumber: () => helpers.time.latestBlock(),
7 | timestamp: () => helpers.time.latest(),
8 | },
9 | clockFromReceipt: {
10 | blocknumber: receipt => Promise.resolve(receipt.blockNumber),
11 | timestamp: receipt => web3.eth.getBlock(receipt.blockNumber).then(block => block.timestamp),
12 | },
13 | forward: {
14 | blocknumber: ozHelpers.time.advanceBlockTo,
15 | timestamp: helpers.time.increaseTo,
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js:
--------------------------------------------------------------------------------
1 | const shouldBehaveLikeProxy = require('../Proxy.behaviour');
2 |
3 | const ERC1967Proxy = artifacts.require('ERC1967Proxy');
4 |
5 | contract('ERC1967Proxy', function (accounts) {
6 | const [proxyAdminOwner] = accounts;
7 |
8 | const createProxy = async function (implementation, _admin, initData, opts) {
9 | return ERC1967Proxy.new(implementation, initData, opts);
10 | };
11 |
12 | shouldBehaveLikeProxy(createProxy, undefined, proxyAdminOwner);
13 | });
14 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js:
--------------------------------------------------------------------------------
1 | const { shouldBehaveLikeERC721, shouldBehaveLikeERC721Metadata } = require('./ERC721.behavior');
2 |
3 | const ERC721 = artifacts.require('$ERC721');
4 |
5 | contract('ERC721', function (accounts) {
6 | const name = 'Non Fungible Token';
7 | const symbol = 'NFT';
8 |
9 | beforeEach(async function () {
10 | this.token = await ERC721.new(name, symbol);
11 | });
12 |
13 | shouldBehaveLikeERC721('ERC721', ...accounts);
14 | shouldBehaveLikeERC721Metadata('ERC721', name, symbol, ...accounts);
15 | });
16 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/utils/Context.test.js:
--------------------------------------------------------------------------------
1 | require('@openzeppelin/test-helpers');
2 |
3 | const ContextMock = artifacts.require('ContextMock');
4 | const ContextMockCaller = artifacts.require('ContextMockCaller');
5 |
6 | const { shouldBehaveLikeRegularContext } = require('./Context.behavior');
7 |
8 | contract('Context', function (accounts) {
9 | const [sender] = accounts;
10 |
11 | beforeEach(async function () {
12 | this.context = await ContextMock.new();
13 | this.caller = await ContextMockCaller.new();
14 | });
15 |
16 | shouldBehaveLikeRegularContext(sender);
17 | });
18 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.test.js:
--------------------------------------------------------------------------------
1 | require('@openzeppelin/test-helpers');
2 | const { shouldBehaveLikeEscrow } = require('./Escrow.behavior');
3 |
4 | const Escrow = artifacts.require('Escrow');
5 |
6 | contract('Escrow', function (accounts) {
7 | const [owner, ...otherAccounts] = accounts;
8 |
9 | beforeEach(async function () {
10 | this.escrow = await Escrow.new({ from: owner });
11 | });
12 |
13 | shouldBehaveLikeEscrow(owner, otherAccounts);
14 | });
15 |
--------------------------------------------------------------------------------
/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js:
--------------------------------------------------------------------------------
1 | const { shouldSupportInterfaces } = require('./SupportsInterface.behavior');
2 |
3 | const ERC165 = artifacts.require('$ERC165');
4 |
5 | contract('ERC165', function () {
6 | beforeEach(async function () {
7 | this.mock = await ERC165.new();
8 | });
9 |
10 | shouldSupportInterfaces(['ERC165']);
11 | });
12 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.env.sample:
--------------------------------------------------------------------------------
1 | MNEMONIC=""
2 | # Used for infura based network
3 | INFURA_KEY=""
4 | # Used for custom network
5 | NODE_URL=""
6 | ETHERSCAN_API_KEY=""
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.gitattributes:
--------------------------------------------------------------------------------
1 | *.sol linguist-language=Solidity
2 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | node_modules/
3 | .DS_Store
4 | .zos.session
5 | .openzeppelin/.session
6 | deployments/
7 | env/
8 | dist/
9 | .env
10 | bin/
11 | solc
12 | coverage/
13 | coverage.json
14 | yarn-error.log
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.husky/.gitignore:
--------------------------------------------------------------------------------
1 | _
2 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | # Redirect output to stderr.
5 | exec 1>&2
6 |
7 | # prevent it.only or describe.only commited
8 | if [ "$allowonlytests" != "true" ] &&
9 | test $(git diff --cached | grep -E "\b(it|describe).only\(" | wc -l) != 0
10 | then
11 | cat <<\EOF
12 | Error: Attempt to add it.only or describe.only - which may disable all other tests
13 |
14 | If you know what you are doing you can disable this check using:
15 |
16 | git config hooks.allowonlytests true
17 | EOF
18 | exit 1
19 | fi
20 |
21 | exit 0
22 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.nvmrc:
--------------------------------------------------------------------------------
1 | v15.6.0
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "overrides": [
3 | {
4 | "files": "*.sol",
5 | "options": {
6 | "printWidth": 140,
7 | "tabWidth": 4,
8 | "useTabs": false,
9 | "singleQuote": false,
10 | "bracketSpacing": false,
11 | "explicitTypes": "always"
12 | }
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.solcover.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | skipFiles: [
3 | 'test/Token.sol',
4 | 'test/ERC20Token.sol',
5 | 'test/TestHandler.sol',
6 | 'test/ERC1155Token.sol',
7 | ],
8 | mocha: {
9 | grep: "@skip-on-coverage", // Find everything with this tag
10 | invert: true // Run the grep's inverse set.
11 | }
12 | };
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.solhint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "solhint:recommended",
3 | "plugins": [
4 | "prettier"
5 | ],
6 | "rules": {
7 | "compiler-version": "off",
8 | "func-visibility": [
9 | "warn",
10 | {
11 | "ignoreConstructors": true
12 | }
13 | ],
14 | "prettier/prettier": "error",
15 | "not-rely-on-time": "off",
16 | "reason-string": "off",
17 | "no-empty-blocks": "off",
18 | "avoid-low-level-calls": "off"
19 | }
20 | }
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "truffle test (ganache running)",
6 | "type": "node",
7 | "request": "launch",
8 | "program": "${workspaceRoot}/node_modules/truffle/build/cli.bundled.js",
9 | "args": [
10 | "test"
11 | ],
12 | "cwd": "${workspaceRoot}",
13 | "outFiles": [
14 | "${workspaceRoot}/test/**/*"
15 | ],
16 | },
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/benchmark/GnosisSafe.Creation.spec.ts:
--------------------------------------------------------------------------------
1 | import "@nomiclabs/hardhat-ethers";
2 | import { setupBenchmarkContracts } from "./utils/setup"
3 |
4 | const contractSetup = setupBenchmarkContracts(undefined, true)
5 | describe("GnosisSafe", async () => {
6 | it("creation", async () => {
7 | await contractSetup()
8 | })
9 | })
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/common/Enum.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | /// @title Enum - Collection of enums
5 | /// @author Richard Meissner -
6 | contract Enum {
7 | enum Operation {Call, DelegateCall}
8 | }
9 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/common/EtherPaymentFallback.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | /// @title EtherPaymentFallback - A contract that has a fallback to accept ether payments
5 | /// @author Richard Meissner -
6 | contract EtherPaymentFallback {
7 | event SafeReceived(address indexed sender, uint256 value);
8 |
9 | /// @dev Fallback function accepts Ether transactions.
10 | receive() external payable {
11 | emit SafeReceived(msg.sender, msg.value);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/common/SelfAuthorized.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | /// @title SelfAuthorized - authorizes current contract to perform actions
5 | /// @author Richard Meissner -
6 | contract SelfAuthorized {
7 | function requireSelfCall() private view {
8 | require(msg.sender == address(this), "GS031");
9 | }
10 |
11 | modifier authorized() {
12 | // This is a function call as it minimized the bytecode size
13 | requireSelfCall();
14 | _;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/common/Singleton.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | /// @title Singleton - Base for singleton contracts (should always be first super contract)
5 | /// This contract is tightly coupled to our proxy contract (see `proxies/GnosisSafeProxy.sol`)
6 | /// @author Richard Meissner -
7 | contract Singleton {
8 | // singleton always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.
9 | // It should also always be ensured that the address is stored alone (uses a full word)
10 | address private singleton;
11 | }
12 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/interfaces/ERC777TokensRecipient.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | interface ERC777TokensRecipient {
5 | function tokensReceived(
6 | address operator,
7 | address from,
8 | address to,
9 | uint256 amount,
10 | bytes calldata data,
11 | bytes calldata operatorData
12 | ) external;
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/proxies/IProxyCreationCallback.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 | import "./GnosisSafeProxy.sol";
4 |
5 | interface IProxyCreationCallback {
6 | function proxyCreated(
7 | GnosisSafeProxy proxy,
8 | address _singleton,
9 | bytes calldata initializer,
10 | uint256 saltNonce
11 | ) external;
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/test/ERC20Token.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.6.0 <0.8.0;
3 |
4 | import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5 |
6 | contract ERC20Token is ERC20 {
7 | constructor() public ERC20("TestToken", "TT") {
8 | _mint(msg.sender, 1000000000000000);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/test/TestHandler.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.7.0 <0.9.0;
3 |
4 | import "../handler/HandlerContext.sol";
5 |
6 | contract TestHandler is HandlerContext {
7 | function dudududu() external view returns (address sender, address manager) {
8 | return (_msgSender(), _manager());
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/contracts/test/Token.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: LGPL-3.0-only
2 | pragma solidity >=0.6.0 <0.7.0;
3 | import "@gnosis.pm/mock-contract/contracts/MockContract.sol";
4 |
5 | interface Token {
6 | function transfer(address _to, uint256 value) external returns (bool);
7 | }
8 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_0.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_1.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_2_0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_2_0.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Final.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Final.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/Gnosis_Safe_Symbolic_Execution.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Symbolic_Execution.pdf
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/audit_1_2_0.md:
--------------------------------------------------------------------------------
1 | ### Audit Results
2 |
3 | ##### Auditor
4 | * G0 Group (https://github.com/g0-group)
5 | * Adam Kolář (@adamkolar)
6 | * Nick Munoz-McDonald (@NickErrant)
7 |
8 | ##### Notes
9 | The audit was performed on commit [62d4bd39925db65083b035115d6987772b2d2dca](https://github.com/gnosis/safe-contracts/commit/62d4bd39925db65083b035115d6987772b2d2dca)
10 |
11 | ##### Files
12 | * [Audit Report 1.2.0](Gnosis_Safe_Audit_Report_1_2_0.pdf)
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/docs/rv_1_0_0.md:
--------------------------------------------------------------------------------
1 | ### Formal Verification Results
2 |
3 | ##### Auditor
4 | * Runtime Verification (https://github.com/runtimeverification)
5 |
6 | ##### Notes
7 | The formal verification was based on commit [427d6f7e779431333c54bcb4d4cde31e4d57ce96](https://github.com/gnosis/safe-contracts/commit/427d6f7e779431333c54bcb4d4cde31e4d57ce96)
8 |
9 | Critical findings have been fixed with https://github.com/gnosis/safe-contracts/pull/90
10 |
11 | ##### Files
12 | * [Formal Verification Report](Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf)
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/deploy/deploy_accessors.ts:
--------------------------------------------------------------------------------
1 | import { DeployFunction } from "hardhat-deploy/types";
2 | import { HardhatRuntimeEnvironment } from "hardhat/types";
3 |
4 | const deploy: DeployFunction = async function (
5 | hre: HardhatRuntimeEnvironment,
6 | ) {
7 | const { deployments, getNamedAccounts } = hre;
8 | const { deployer } = await getNamedAccounts();
9 | const { deploy } = deployments;
10 |
11 | await deploy("SimulateTxAccessor", {
12 | from: deployer,
13 | args: [],
14 | log: true,
15 | deterministicDeployment: true,
16 | });
17 | };
18 |
19 | deploy.tags = ['accessors', 'l2-suite', 'main-suite']
20 | export default deploy;
21 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/deploy/deploy_factories.ts:
--------------------------------------------------------------------------------
1 | import { DeployFunction } from "hardhat-deploy/types";
2 | import { HardhatRuntimeEnvironment } from "hardhat/types";
3 |
4 | const deploy: DeployFunction = async function (
5 | hre: HardhatRuntimeEnvironment,
6 | ) {
7 | const { deployments, getNamedAccounts } = hre;
8 | const { deployer } = await getNamedAccounts();
9 | const { deploy } = deployments;
10 |
11 | await deploy("GnosisSafeProxyFactory", {
12 | from: deployer,
13 | args: [],
14 | log: true,
15 | deterministicDeployment: true,
16 | });
17 | };
18 |
19 | deploy.tags = ['factory', 'l2-suite', 'main-suite']
20 | export default deploy;
21 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/deploy/deploy_safe_l2.ts:
--------------------------------------------------------------------------------
1 | import { DeployFunction } from "hardhat-deploy/types";
2 | import { HardhatRuntimeEnvironment } from "hardhat/types";
3 |
4 | const deploy: DeployFunction = async function (
5 | hre: HardhatRuntimeEnvironment,
6 | ) {
7 | const { deployments, getNamedAccounts } = hre;
8 | const { deployer } = await getNamedAccounts();
9 | const { deploy } = deployments;
10 |
11 | await deploy("GnosisSafeL2", {
12 | from: deployer,
13 | args: [],
14 | log: true,
15 | deterministicDeployment: true,
16 | });
17 | };
18 |
19 | deploy.tags = ['l2', 'l2-suite']
20 | export default deploy;
21 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/deploy/deploy_safe_singleton.ts:
--------------------------------------------------------------------------------
1 | import { DeployFunction } from "hardhat-deploy/types";
2 | import { HardhatRuntimeEnvironment } from "hardhat/types";
3 |
4 | const deploy: DeployFunction = async function (
5 | hre: HardhatRuntimeEnvironment,
6 | ) {
7 | const { deployments, getNamedAccounts } = hre;
8 | const { deployer } = await getNamedAccounts();
9 | const { deploy } = deployments;
10 |
11 | await deploy("GnosisSafe", {
12 | from: deployer,
13 | args: [],
14 | log: true,
15 | deterministicDeployment: true,
16 | });
17 | };
18 |
19 | deploy.tags = ['singleton', 'main-suite']
20 | export default deploy;
21 |
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './utils/proxies'
2 | export * from './utils/constants'
3 | export * from './utils/execution'
4 | export * from './utils/multisend'
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/tasks/deploy_contracts.ts:
--------------------------------------------------------------------------------
1 | import "hardhat-deploy";
2 | import "@nomiclabs/hardhat-ethers";
3 | import { task } from "hardhat/config";
4 |
5 | task("deploy-contracts", "Deploys and verifies Safe contracts")
6 | .setAction(async (_, hre) => {
7 | await hre.run("deploy")
8 | await hre.run("local-verify")
9 | await hre.run("etherscan-verify", { forceLicense: true, license: 'LGPL-3.0'})
10 | });
11 |
12 | export { }
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/utils/constants.ts:
--------------------------------------------------------------------------------
1 | export const AddressOne = "0x0000000000000000000000000000000000000001";
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/src/utils/solc.ts:
--------------------------------------------------------------------------------
1 | import solc from "solc"
2 |
3 | const solcCache: Record = {}
4 |
5 | export const loadSolc = async (version: string): Promise => {
6 | return await new Promise((resolve, reject) => {
7 | if (solcCache[version] !== undefined) resolve(solcCache[version])
8 | else solc.loadRemoteVersion(`v${version}`, (error: any, soljson: any) => {
9 | solcCache[version] = soljson
10 | return (error) ? reject(error) : resolve(soljson);
11 | });
12 | });
13 | }
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/test/factory/Proxy.spec.ts:
--------------------------------------------------------------------------------
1 | import { expect } from "chai";
2 | import hre from "hardhat";
3 | import "@nomiclabs/hardhat-ethers";
4 | import { AddressZero } from "@ethersproject/constants";
5 |
6 | describe("Proxy", async () => {
7 |
8 | describe("contrcutor", async () => {
9 |
10 | it('should revert with invalid singleton address', async () => {
11 | const Proxy = await hre.ethers.getContractFactory("GnosisSafeProxy");
12 | await expect(
13 | Proxy.deploy(AddressZero)
14 | ).to.be.revertedWith("Invalid singleton address provided")
15 | })
16 |
17 | })
18 | })
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/test/utils/config.ts:
--------------------------------------------------------------------------------
1 | export const safeContractUnderTest = () => {
2 | return !process.env.SAFE_CONTRACT_UNDER_TEST ? "GnosisSafe" : process.env.SAFE_CONTRACT_UNDER_TEST
3 | }
--------------------------------------------------------------------------------
/contracts/lib/safe-contracts/types/solc.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'solc';
--------------------------------------------------------------------------------
/contracts/lib/solady/.gitignore:
--------------------------------------------------------------------------------
1 | # NodeJS files
2 | node_modules/
3 | coverage
4 | coverage.json
5 | typechain
6 |
7 | # Hardhat files
8 | cache
9 | artifacts
10 |
11 | cache/
12 | out/
13 |
14 | # Ignore Environment Variables!
15 | .env
16 | .env.prod
17 |
18 | # Ignore all vscode settings
19 | .vscode/
20 |
21 | # Ignore flattened files
22 | flattened.txt
23 |
24 | broadcast
25 |
26 | # Coverage
27 | lcov.info
28 |
29 | # Woke testing
30 | .woke-build
31 | .woke-logs
32 | pytypes
33 | __pycache__/
34 | *.py[cod]
35 | .hypothesis/
36 | woke-coverage.cov
37 |
--------------------------------------------------------------------------------
/contracts/lib/solady/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lib/ds-test"]
2 | path = lib/ds-test
3 | url = https://github.com/dapphub/ds-test
4 | branch = 9310e879db8ba3ea6d5c6489a579118fd264a3f5
--------------------------------------------------------------------------------
/contracts/lib/solady/audits/ackee-blockchain-solady-report.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/audits/ackee-blockchain-solady-report.pdf
--------------------------------------------------------------------------------
/contracts/lib/solady/audits/shung-solady-erc721-audit.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/audits/shung-solady-erc721-audit.pdf
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/ext/woke/__init__.py
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/Approval.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract ApprovalRaceToken is ERC20 {
9 | // --- Init ---
10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {}
11 |
12 | // --- Token ---
13 | function approve(address usr, uint wad) override public returns (bool) {
14 | require(allowance[msg.sender][usr] == 0, "unsafe-approve");
15 | return super.approve(usr, wad);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/ApprovalToZero.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract ApprovalToZeroToken is ERC20 {
9 | // --- Init ---
10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {}
11 |
12 | // --- Token ---
13 | function approve(address usr, uint wad) override public returns (bool) {
14 | require(usr != address(0), "no approval for the zero address");
15 | return super.approve(usr, wad);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/HighDecimals.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract HighDecimalToken is ERC20 {
9 | constructor(uint _totalSupply) ERC20(_totalSupply) public {
10 | decimals = 50;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/LowDecimals.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract LowDecimalToken is ERC20 {
9 | constructor(uint _totalSupply) ERC20(_totalSupply) public {
10 | decimals = 2;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/RevertToZero.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract RevertToZeroToken is ERC20 {
9 | // --- Init ---
10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {}
11 |
12 | // --- Token ---
13 | function transferFrom(address src, address dst, uint wad) override public returns (bool) {
14 | require(dst != address(0), "transfer-to-zero");
15 | return super.transferFrom(src, dst, wad);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/solady/ext/woke/weird/RevertZero.sol:
--------------------------------------------------------------------------------
1 | // Copyright (C) 2020 d-xo
2 | // SPDX-License-Identifier: AGPL-3.0-only
3 |
4 | pragma solidity >=0.6.12;
5 |
6 | import {ERC20} from "./ERC20.sol";
7 |
8 | contract RevertZeroToken is ERC20 {
9 | // --- Init ---
10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {}
11 |
12 | // --- Token ---
13 | function transferFrom(address src, address dst, uint wad) override public returns (bool) {
14 | require(wad != 0, "zero-value-transfer");
15 | return super.transferFrom(src, dst, wad);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/contracts/lib/solady/lib/ds-test/.gitignore:
--------------------------------------------------------------------------------
1 | /.dapple
2 | /build
3 | /out
4 |
--------------------------------------------------------------------------------
/contracts/lib/solady/lib/ds-test/Makefile:
--------------------------------------------------------------------------------
1 | all:; dapp build
2 |
3 | test:
4 | -dapp --use solc:0.4.23 build
5 | -dapp --use solc:0.4.26 build
6 | -dapp --use solc:0.5.17 build
7 | -dapp --use solc:0.6.12 build
8 | -dapp --use solc:0.7.5 build
9 |
10 | demo:
11 | DAPP_SRC=demo dapp --use solc:0.7.5 build
12 | -hevm dapp-test --verbose 3
13 |
14 | .PHONY: test demo
15 |
--------------------------------------------------------------------------------
/contracts/lib/solady/lib/ds-test/default.nix:
--------------------------------------------------------------------------------
1 | { solidityPackage, dappsys }: solidityPackage {
2 | name = "ds-test";
3 | src = ./src;
4 | }
5 |
--------------------------------------------------------------------------------
/contracts/lib/solady/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "solady",
3 | "version": "0.0.55",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "solady",
9 | "version": "0.0.55",
10 | "license": "MIT"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/solady/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "solady",
3 | "license": "MIT",
4 | "version": "0.0.113",
5 | "description": "Optimized Solidity snippets.",
6 | "files": [
7 | "src/**/*.sol",
8 | "js/**/*.js"
9 | ],
10 | "main": "js/solady.js",
11 | "module": "js/solady.js",
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/vectorized/solady.git"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/contracts/lib/solady/test/README.md:
--------------------------------------------------------------------------------
1 | ## WARNING!
2 |
3 | All test files are strictly intended for testing purposes only.
4 |
5 | Do NOT copy anything here into production code unless you really know what you are doing.
--------------------------------------------------------------------------------
/contracts/lib/solady/test/utils/InvariantTest.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.4;
3 |
4 | contract InvariantTest {
5 | address[] private _targets;
6 |
7 | function targetContracts() public view virtual returns (address[] memory) {
8 | require(_targets.length > 0, "NO_TARGET_CONTRACTS");
9 | return _targets;
10 | }
11 |
12 | function _addTargetContract(address newTargetContract) internal virtual {
13 | _targets.push(newTargetContract);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/contracts/lib/solady/test/utils/SoladyTest.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.4;
3 |
4 | import "./forge-std/Test.sol";
5 | import "./TestPlus.sol";
6 |
7 | contract SoladyTest is Test, TestPlus {
8 | /// @dev Alias for `_hem`.
9 | function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256) {
10 | return _hem(x, min, max);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/contracts/lib/solady/test/utils/forge-std/Script.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity >=0.6.0 <0.9.0;
3 |
4 | import "./Vm.sol";
5 | import "./console.sol";
6 |
7 | abstract contract Script {
8 | bool public IS_SCRIPT = true;
9 | address private constant VM_ADDRESS =
10 | address(bytes20(uint160(uint256(keccak256("hevm cheat code")))));
11 |
12 | Vm public constant vm = Vm(VM_ADDRESS);
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/lib/solady/test/utils/mocks/MockERC1271Malicious.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.4;
3 |
4 | /// @dev WARNING! This mock is strictly intended for testing purposes only.
5 | /// Do NOT copy anything here into production code unless you really know what you are doing.
6 | contract MockERC1271Malicious {
7 | function isValidSignature(bytes32, bytes calldata) external pure returns (bytes4) {
8 | /// @solidity memory-safe-assembly
9 | assembly {
10 | mstore(0, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
11 | return(0, 32)
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/contracts/offchain/addresses/arb.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/avax.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/base.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/bsc.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/ftm.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/goerli.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/mainnet.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/optimism.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/polygon.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/offchain/addresses/zkevm.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/contracts/remappings.txt:
--------------------------------------------------------------------------------
1 | ds-test/=lib/forge-std/lib/ds-test/src/
2 | erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/
3 | forge-std/=lib/forge-std/src/
4 | openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/
5 | openzeppelin/=lib/openzeppelin-contracts/contracts/
6 | safe-contracts/=lib/safe-contracts/contracts/
7 | solady/=lib/solady/src/
8 | solmate/=lib/solady/lib/solmate/src/
9 | solidity-bytes-utils/=lib/solidity-bytes-utils/contracts/
--------------------------------------------------------------------------------
/contracts/scope.txt:
--------------------------------------------------------------------------------
1 | src/libraries/TypeHashHelper.sol
2 | src/libraries/SafeHelper.sol
3 | src/core/TransactionValidator.sol
4 | src/core/SafeModeratorOverridable.sol
5 | src/core/SafeEnabler.sol
6 | src/core/SafeModerator.sol
7 | src/core/Constants.sol
8 | src/core/ConsoleFallbackHandler.sol
9 | src/core/AddressProvider.sol
10 | src/core/PolicyValidator.sol
11 | src/core/registries/PolicyRegistry.sol
12 | src/core/registries/ExecutorRegistry.sol
13 | src/core/registries/WalletRegistry.sol
14 | src/core/AddressProviderService.sol
15 | src/core/SafeDeployer.sol
16 | src/core/ExecutorPlugin.sol
--------------------------------------------------------------------------------
/contracts/script/deploy_DeployProtocol.s.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Unlicense
2 | pragma solidity ^0.8.19;
3 |
4 | import "../script/utils/ConsoleFactory.s.sol";
5 |
6 | contract DeployProtocol is ConsoleFactory {
7 | constructor() ConsoleFactory("offchain/addressManager.ts") {}
8 |
9 | function deployProtocol() public {
10 | ConsoleFactory.deployConsole(_getGovernance(), true);
11 | }
12 |
13 | function _getGovernance() internal view returns (address) {
14 | address _gov = vm.addr(uint256(vm.envBytes32("CONSOLE_MAINNET_PRIVATE_KEY")));
15 | require(_gov != address(0), "invalid gov");
16 | return _gov;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/contracts/script/utils/Deployer.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: Unlicense
2 | pragma solidity ^0.8.19;
3 |
4 | import {CREATE3} from "solady/utils/CREATE3.sol";
5 |
6 | contract Deployer {
7 | function create3Deploy(bytes memory code, bytes32 salt, bytes memory constructorArgs) public returns (address) {
8 | return CREATE3.deploy(salt, abi.encodePacked(code, constructorArgs), 0);
9 | }
10 |
11 | function getDeployed(bytes32 salt) public view returns (address) {
12 | return CREATE3.getDeployed(salt);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/contracts/slither.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "filter_paths": "(test/|script/|lib/)"
3 | }
--------------------------------------------------------------------------------
/contracts/sonar-project.properties:
--------------------------------------------------------------------------------
1 | sonar.projectKey=console-core-v2
2 | sonar.projectName=console-core-v2
3 | sonar.projectVersion=1.0
4 |
5 | sonar.sarifReportPaths=results.sarif
6 | sonar.exclusions="lib/**"
7 |
8 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/AddressProvider/accept-governance/AcceptGovernance.tree:
--------------------------------------------------------------------------------
1 | AcceptGovernance.t.sol::acceptGovernance()
2 | ├─ When {msg.sender} is not pendingGovernance
3 | │ └─ It should revert with {NotPendingGovernance(msg.sender)}
4 | └─ When {msg.sender} is pendingGovernance
5 | ├─ It should emit a {GovernanceTransferred(governance, msg.sender)} event
6 | ├─ It should set {governance} to {msg.sender}
7 | └─ It should clear pendingGovernance
--------------------------------------------------------------------------------
/contracts/test/branch-trees/AddressProvider/set-governance/SetGovernance.tree:
--------------------------------------------------------------------------------
1 | SetGovernance.t.sol::setGovernance(address _newGovernance)
2 | ├─ When {_newGovernance} address is ADDRESS_ZERO
3 | │ └─ It shoud revert with {NullAddress()}
4 | └─ When new governance address is not ADDRESS_ZERO
5 | ├─ When the caller is not governance address
6 | │ └─ It shoud revert with {NotGovernance(msg.sender)}
7 | └─ When the caller is governance address
8 | ├─ it should emit a {GovernanceTransferRequested(prevGov, newGov)} event
9 | └─ it should set {pendingGovernance} to {_newGovernance}
--------------------------------------------------------------------------------
/contracts/test/branch-trees/ExecutorRegistry/deregister-executor/DeRegisterExecutor.tree:
--------------------------------------------------------------------------------
1 | DeRegisterExecutor.t.sol::deRegisterExecutor(address _subAccount, address _executor)
2 | ├─ When {msg.sender} is not owner wallet of {_subAccount}
3 | │ └─ It should revert with {NotOwnerWallet()}
4 | └─ When {msg.sender} is owner wallet of {_subAccount}
5 | ├─ When {_executor} is not registered for {_subAccount}
6 | │ └─ It should revert with {DoesNotExist()}
7 | └─ When {_executor} is registered for {_subAccount}
8 | └─ {_executor} should be removed from {subAccountToExecutors} for {_subAccount}
9 | └─ It should emit DeRegisterExecutor(_subAccount, _owner, _executor) event
--------------------------------------------------------------------------------
/contracts/test/branch-trees/ExecutorRegistry/register-executor/RegisterExecutor.tree:
--------------------------------------------------------------------------------
1 | RegisterExecutor.t.sol::registerExecutor(address _subAccount, address _executor)
2 | ├─ When {msg.sender} is not owner wallet of {_subAccount}
3 | │ └─ It should revert with {NotOwnerWallet()}
4 | └─ When {msg.sender} is owner wallet of {_subAccount}
5 | ├─ When {_executor} is already registered for {_subAccount}
6 | │ └─ It should revert with {AlreadyExists()}
7 | └─ When {_executor} is not registered for {_subAccount}
8 | └─ {_executor} should be added to {subAccountToExecutors} for {_subAccount}
9 | └─ It should emit RegisterExecutor(_subAccount, _owner, _executor) event
--------------------------------------------------------------------------------
/contracts/test/branch-trees/SafeEnabler/SafeEnabler.misc.t.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: UNLICENSED
2 | pragma solidity ^0.8.19;
3 |
4 | import "forge-std/Test.sol";
5 |
6 | import {SafeEnabler} from "src/core/SafeEnabler.sol";
7 |
8 | contract SafeEnabler_SetGuardTest is Test, SafeEnabler {
9 | function testConstants() public {
10 | assertEq(_SENTINEL_MODULES, address(0x1));
11 | assertEq(_GUARD_STORAGE_SLOT, keccak256("guard_manager.guard.address"));
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/SafeModerator/check-after-execution/CheckAfterExecution.tree:
--------------------------------------------------------------------------------
1 | CheckAfterExecution.t.sol::checkAfterExecution(bytes32, /*txHash*/ bool /*success*/ )
2 | └─ It should make a call to validatePostTransaction on TransactionValidator
3 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/SafeModerator/check-transaction/CheckTransaction.tree:
--------------------------------------------------------------------------------
1 | CheckTransaction.t.sol::checkTransaction(address to, uint256 value, bytes memory data, Enum.Operation operation, uint256, /*safeTxGas*/ uint256, /*baseGas*/ uint256, /*gasPrice*/ address, /*gasToken*/ address payable, /*refundReceiver*/ bytes memory signatures, address /*msgSender*/)
2 | └─It should make a call to validatePreTransaction on TransactionValidator
3 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/SafeModeratorOverridable/check-after-execution/CheckAfterExecution.tree:
--------------------------------------------------------------------------------
1 | CheckAfterExecution.t.sol::checkAfterExecution(bytes32, /*txHash*/ bool /*success*/ )
2 | └─ It should make a call to validatePostTransactionOverridable on TransactionValidator
3 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/SafeModeratorOverridable/check-transaction/CheckTransaction.tree:
--------------------------------------------------------------------------------
1 | CheckTransaction.t.sol::checkTransaction(address to, uint256 value, bytes memory data, Enum.Operation operation, uint256, /*safeTxGas*/ uint256, /*baseGas*/ uint256, /*gasPrice*/ address, /*gasToken*/ address payable, /*refundReceiver*/ bytes memory signatures, address /*msgSender*/)
2 | └─ It should make a call to validatePreTransactionOverridable on TransactionValidator
3 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-post-exec-tx/ValidatePostExecutorTransaction.tree:
--------------------------------------------------------------------------------
1 | ValidatePostExecutorTransaction.t.sol::validatePostExecutorTransaction(address, /*msgSender */ address subAccount)
2 | ├─ When {subAccount} doesn't have it's guard on.
3 | │ └─ It should revert with {InvalidGuard()}
4 | └─ When {subAccount} has it's guard on
5 | ├─ When {subAccount} has owner console enabled as module
6 | │ └─ It should return without reverting
7 | └─ When {subAccount} has owner console disabled as module
8 | └─ It should revert with {InvalidModule()}
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-post-tx-overridable/ValidatePostTransactionOverridable.tree:
--------------------------------------------------------------------------------
1 | ValidatePostTransactionOverridable.t.sol::validatePostTransactionOverridable()
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-post-tx/ValidatePostTx.tree:
--------------------------------------------------------------------------------
1 | ValidatePostTransaction.t.sol::validatePostTransaction(bytes32, /*txHash */ bool, /*success */ address subAccount)
2 | ├─ When {subAccount} doesn't have it's guard on.
3 | │ └─ It should revert with {InvalidGuard()}
4 | └─ When {subAccount} has it's guard on
5 | ├─ When {subAccount} has owner console enabled as module
6 | │ └─ It should return without reverting
7 | └─ When {subAccount} has owner console disabled as module
8 | └─ It should revert with {InvalidModule()}
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-pre-exec-tx/ValidatePreExecutorTx.tree:
--------------------------------------------------------------------------------
1 | ValidatePreExecutorTransaction.t.sol::validatePreExecutorTransaction(address, /*msgSender */address from,address to,uint256 value,bytes memory data,Enum.Operation operation,bytes memory signatures)
2 | ├─ When {policyValidator} validates the signatures
3 | │ └─ It should return without reverting
4 | └─ When {policyValidator} invalidates the signatures
5 | └─ It should revert with {TxnUnAuthorized()}
6 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-pre-tx-overridable/ValidatePreTxOverridable.tree:
--------------------------------------------------------------------------------
1 | ValidatePreTransactionOverridable.t.sol::validatePreTransactionOverridable(SafeTransactionParams memory txParams)
2 | ├─ When transaction is a guard removal transaction
3 | │ └─ It should return without reverting
4 | └─ When transaction is a not a guard removal transaction
5 | ├─ When {policyValidator} validates the signatures
6 | │ └─ It should return without reverting
7 | └─ When {policyValidator} invalidates the signatures
8 | └─ It should revert with {TxnUnAuthorized()}
9 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/TransactionValidator/validate-pre-tx/ValidatePreTx.tree:
--------------------------------------------------------------------------------
1 | ValidatePreTransaction.t.sol::validatePreTransaction(SafeTransactionParams memory txParams)
2 | ├─ When {policyValidator} validates the signatures
3 | │ └─ It should return without reverting
4 | └─ When {policyValidator} invalidates the signatures
5 | └─ It should revert with {TxnUnAuthorized()}
6 |
--------------------------------------------------------------------------------
/contracts/test/branch-trees/WalletRegistry/register-wallet/RegisterWallet.tree:
--------------------------------------------------------------------------------
1 | RegisterWallet.t.sol::registerWallet()
2 | ├─ When {msg.sender} is already registered
3 | │ └─ It should revert with {AlreadyRegistered()}
4 | └─ When {msg.sender} is not registered
5 | ├─ When {msg.sender} is a sub account
6 | │ └─ It should revert with {IsSubAccount()}
7 | └─ When {msg.sender} is not a sub account
8 | ├─ It should register {msg.sender} as wallet in {isWallet}
9 | └─ It should emit {RegisterWallet(msg.sender)}
10 |
--------------------------------------------------------------------------------
/contracts/test/libs/TypeHashHelper.lib.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: BUSL-1.1
2 | pragma solidity 0.8.19;
3 |
4 | import {TypeHashHelper} from "src/libraries/TypeHashHelper.sol";
5 |
6 | contract TypeHashHelperLib {
7 | function buildTransactionStructHash(TypeHashHelper.Transaction memory _txn) external pure returns (bytes32) {
8 | return TypeHashHelper._buildTransactionStructHash(_txn);
9 | }
10 |
11 | function buildValidationStructHash(TypeHashHelper.Validation memory _vldn) external pure returns (bytes32) {
12 | return TypeHashHelper._buildValidationStructHash(_vldn);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/contracts/test/mocks/MockUnsupportedAddress.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: UNLICENSED
2 | pragma solidity ^0.8.19;
3 |
4 | contract MockUnsupportedAddress {
5 | fallback(bytes calldata) external returns (bytes memory) {
6 | return abi.encode(15);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/contracts/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "ES2016",
5 | "lib": ["es2015"],
6 | "resolveJsonModule": true,
7 | "esModuleInterop": true,
8 | "alwaysStrict": false
9 | },
10 | "exclude": ["node_modules"]
11 | }
12 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/025a312229f81f0132287a07237573a4-15005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/025a312229f81f0132287a07237573a4-15005.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/027771eed6eec6d29d87c3d641c6c03f-DAC44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/027771eed6eec6d29d87c3d641c6c03f-DAC44.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/03056f38c0409e11b992662ff8b9d291-C22C9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/03056f38c0409e11b992662ff8b9d291-C22C9.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0432dad70b18fa0232c147833c40f5c2-594DD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0432dad70b18fa0232c147833c40f5c2-594DD.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/08b5148b236c630bb46aacacf73a217b-315CF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/08b5148b236c630bb46aacacf73a217b-315CF.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0ae311857ca5610dd4e8476c7100f7bd-A60D6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0ae311857ca5610dd4e8476c7100f7bd-A60D6.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0dd6255142c84dcc6ec663458ed3fda9-E98D2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0dd6255142c84dcc6ec663458ed3fda9-E98D2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1-B2132.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1-B2132.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047393624412210-1B61B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047393624412210-1B61B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047429766713404-16E35.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047429766713404-16E35.gif
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047660084334622-4FCFD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047660084334622-4FCFD.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1025426040316756068-05843.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1025426040316756068-05843.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1083068770823721071-EE4F6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1083068770823721071-EE4F6.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/108db4db43a8df92fb224ce27c8419ec-5A94A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/108db4db43a8df92fb224ce27c8419ec-5A94A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1110201692663857255-A8E42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1110201692663857255-A8E42.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344547949301911-C84AB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344547949301911-C84AB.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344679365234779-05F87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344679365234779-05F87.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1162a888c78000773591a5db6de8aa9f-DCF7E.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1162a888c78000773591a5db6de8aa9f-DCF7E.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f3fc-4884A.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f446-9CC34.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f50d-195C0.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f636-300DD.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f642-83E8A.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2-ADBB4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2-ADBB4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/25d1d9d8d339f4258368c0359932dd5e-1C630.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/25d1d9d8d339f4258368c0359932dd5e-1C630.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2705-0589F.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2795-3358E.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3-FB033.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3-FB033.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37254c70d1f43924aab295c5f32a33ab-FAE53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37254c70d1f43924aab295c5f32a33ab-FAE53.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37745f5520f15b2d5e24f7cd11118290-87C96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37745f5520f15b2d5e24f7cd11118290-87C96.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/4053316a000ef470965c629e7aacad9a-3BB48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/4053316a000ef470965c629e7aacad9a-3BB48.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/40faf496db7b4bbcab37bc04b134567d-EFC50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/40faf496db7b4bbcab37bc04b134567d-EFC50.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/462cefe91b8bf4ec13a78693bb4d942f-B6659.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/462cefe91b8bf4ec13a78693bb4d942f-B6659.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/472e8696c1d575b51208a8571994c6bf-B0333.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/472e8696c1d575b51208a8571994c6bf-B0333.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/48cdf35ad6a1abcf335e556af8087774-4AD25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/48cdf35ad6a1abcf335e556af8087774-4AD25.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5-E9BDB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5-E9BDB.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/51cc6faa390844056c24ea26c654003a-E2C26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/51cc6faa390844056c24ea26c654003a-E2C26.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/591e68a648a7b28f8c1990efe1528761-F96F5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/591e68a648a7b28f8c1990efe1528761-F96F5.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/593f36e88b1657d978d620f5152eca82-52AEA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/593f36e88b1657d978d620f5152eca82-52AEA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6094e48ab77eb87fae4e3348c0d872b4-34FEF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6094e48ab77eb87fae4e3348c0d872b4-34FEF.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/652c9b82f43282f85423f844ca26d6b4-F9AB0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/652c9b82f43282f85423f844ca26d6b4-F9AB0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/675b226a2239369c985cd538027c7c52-40875.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/675b226a2239369c985cd538027c7c52-40875.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6b084fd00f226a77abcf31000a85623e-5C817.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6b084fd00f226a77abcf31000a85623e-5C817.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6cdf4b32a5a3932260b03982bb21b3c6-297C6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6cdf4b32a5a3932260b03982bb21b3c6-297C6.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6ff1e65c0976fd9df6010502da72f911-D2FA0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6ff1e65c0976fd9df6010502da72f911-D2FA0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/701300a5bdd3bf5640bd1370251533e2-0DC47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/701300a5bdd3bf5640bd1370251533e2-0DC47.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/73c29465f45b5724-B024C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/73c29465f45b5724-B024C.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/751f210cd76b9b17316bb54ff939887b-0B021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/751f210cd76b9b17316bb54ff939887b-0B021.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/756596661307965461-B1D91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/756596661307965461-B1D91.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7be22dfd3e29e541eda121ff0ee73256-B7E2E.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7be22dfd3e29e541eda121ff0ee73256-B7E2E.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/80b63b8eef8e8e0bef63af4cd4598430-39256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/80b63b8eef8e8e0bef63af4cd4598430-39256.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/83fa622da18abee1baf881ee7d3dd8da-76C8A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/83fa622da18abee1baf881ee7d3dd8da-76C8A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8441d5e9fe1fd4c074797db4578a0b54-66B22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8441d5e9fe1fd4c074797db4578a0b54-66B22.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893826846457866-1AD3D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893826846457866-1AD3D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827027075142-F23DF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827027075142-F23DF.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827089727568-5FD38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827089727568-5FD38.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827315826708-F59C0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827315826708-F59C0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893828280909886-FBF42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893828280909886-FBF42.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/860bc8415fcb344bebcf89a301158ffd-36A89.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/860bc8415fcb344bebcf89a301158ffd-36A89.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8646f8b4f073429bf27df27459ab18a2-F6800.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8646f8b4f073429bf27df27459ab18a2-F6800.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/886f35a505c4042e51de62b1e7c30fa5-EC7E7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/886f35a505c4042e51de62b1e7c30fa5-EC7E7.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8c6129305f7cfbc60d0e2c052bc22211-CC381.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8c6129305f7cfbc60d0e2c052bc22211-CC381.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/910676187288846397-518CD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/910676187288846397-518CD.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/92719dd7bc8cb77c2a6b6813ef47a830-56832.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/92719dd7bc8cb77c2a6b6813ef47a830-56832.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/934055812859856cd87c3c397ccb56bd-064C4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/934055812859856cd87c3c397ccb56bd-064C4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951505379299311799-78C6C.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951505379299311799-78C6C.gif
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951506091798327316-7578A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951506091798327316-7578A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/977133670429261884-CA8EA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/977133670429261884-CA8EA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9d005f28252054a605d1563bbb94db61-C6F53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9d005f28252054a605d1563bbb94db61-C6F53.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/Screenshot_2023-10-14_07-05-50-95B4B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/Screenshot_2023-10-14_07-05-50-95B4B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a-373CA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a-373CA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a11be1743d960d9d0807e6529db84028-375E9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a11be1743d960d9d0807e6529db84028-375E9.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a6700d776b9feae9a8825a05eb056151-9CE8A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a6700d776b9feae9a8825a05eb056151-9CE8A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aa3584c2ce5b338f4758e69aec19637c-72010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aa3584c2ce5b338f4758e69aec19637c-72010.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/adddc7313b30a4e8b5329894bf2034ab-5B4E5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/adddc7313b30a4e8b5329894bf2034ab-5B4E5.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/af47db264f598a776eef080a2c7aee22-4D508.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/af47db264f598a776eef080a2c7aee22-4D508.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/apple-touch-icon%402-EBA58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/apple-touch-icon%402-EBA58.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b30d26b226234841286fe01dbf9e98da-3EB14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b30d26b226234841286fe01dbf9e98da-3EB14.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b35ccff921a31a8e868c330e5d401246-C4BC6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b35ccff921a31a8e868c330e5d401246-C4BC6.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4d325ccda484b98fb07c2586ae5f970-64C08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4d325ccda484b98fb07c2586ae5f970-64C08.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4fead77f737aa7840a25e1cd39eb062-CEDEC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4fead77f737aa7840a25e1cd39eb062-CEDEC.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b70570b512f4bae5ddf0357c48b48b22-D1D5C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b70570b512f4bae5ddf0357c48b48b22-D1D5C.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bae3fdb74ed49558a4cd0636132b6776-75EEB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bae3fdb74ed49558a4cd0636132b6776-75EEB.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bdd37d345b2d35b5513f03a81143aa4a-51209.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bdd37d345b2d35b5513f03a81143aa4a-51209.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2704939e6436659b126caadce6bf20f-80CE2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2704939e6436659b126caadce6bf20f-80CE2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4-og-banner-20E67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4-og-banner-20E67.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c616e441e02fbf7f8f4594b17761c02c-768C2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c616e441e02fbf7f8f4594b17761c02c-768C2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/card-E9D38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/card-E9D38.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/d35a0c87f7f9f5e7c67430ca9593af01-64365.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/d35a0c87f7f9f5e7c67430ca9593af01-64365.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dc6e0072c993da12b699bb569417b6d1-25F7D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dc6e0072c993da12b699bb569417b6d1-25F7D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dd0b02132544c612d48d10270e412d9b-9486F.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dd0b02132544c612d48d10270e412d9b-9486F.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e13420cb45f97860245c8425af03e2fb-87D5F.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e13420cb45f97860245c8425af03e2fb-87D5F.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e9472a11f41d425badda92e53fc91864-F560D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e9472a11f41d425badda92e53fc91864-F560D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ec283548018391e9a25a61215bd46007-2D6CA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ec283548018391e9a25a61215bd46007-2D6CA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ed4484ef66c898526d51a3b65936c2ff-6B4AE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ed4484ef66c898526d51a3b65936c2ff-6B4AE.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f4422c70568695907d5aa7f8632b4d51-4FBE2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f4422c70568695907d5aa7f8632b4d51-4FBE2.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-400-E988B.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-400-E988B.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-500-0777F.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-500-0777F.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-600-CB411.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-600-CB411.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-700-891AC.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-700-891AC.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-800-D36B0.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-800-D36B0.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-400-1456D.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-400-1456D.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-500-89CE5.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-500-89CE5.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-600-C1EA8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-600-C1EA8.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-700-1949A.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-700-1949A.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-800-58487.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-800-58487.woff2
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/hasbulla-money-0551F.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/hasbulla-money-0551F.mp4
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-1CF31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-1CF31.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-216BC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-216BC.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-42DBD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-42DBD.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-5204D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-5204D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-57CC8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-57CC8.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-67E04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-67E04.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-68CA4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-68CA4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-6F0E0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-6F0E0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-91C78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-91C78.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A2D2A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A2D2A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A438B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A438B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-AE099.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-AE099.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/james-franco-wait-what-AA6B1.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/james-franco-wait-what-AA6B1.mp4
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/lfg-lets-E1782.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/lfg-lets-E1782.mp4
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/safe-contracts-EDE24:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/safe-contracts-EDE24
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/73c29465f45b5724-B024C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/73c29465f45b5724-B024C.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/Screenshot_2023-10-14_07-05-50-95B4B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/Screenshot_2023-10-14_07-05-50-95B4B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/a-373CA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/a-373CA.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/apple-touch-icon%402-EBA58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/apple-touch-icon%402-EBA58.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/c4-og-banner-20E67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/c4-og-banner-20E67.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/card-E9D38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/card-E9D38.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/hasbulla-money-22B63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/hasbulla-money-22B63.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-1CF31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-1CF31.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-216BC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-216BC.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-42DBD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-42DBD.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-5204D.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-5204D.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-57CC8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-57CC8.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-67E04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-67E04.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-68CA4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-68CA4.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-6F0E0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-6F0E0.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-91C78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-91C78.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A2D2A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A2D2A.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A438B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A438B.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-AE099.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-AE099.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/james-franco-wait-what-DE3DF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/james-franco-wait-what-DE3DF.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/lfg-lets-5E020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/lfg-lets-5E020.png
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg
--------------------------------------------------------------------------------
/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/safe-contracts-EDE24:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/safe-contracts-EDE24
--------------------------------------------------------------------------------