diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index ce8ea5c..34d1339 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -39,3 +39,17 @@ jobs:
run: |
forge test -vvv
id: test
+
+ - name: Setup NodeJS 20.5.0
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.4.0
+ with:
+ node-version: 20.5.0
+
+ - name: Show NodeJS version
+ run: npm --version
+
+ - name: Install Project Dependencies
+ run: npm install
+
+ - name: Run Hardhat Test
+ run: npx hardhat test
diff --git a/.gitignore b/.gitignore
index ac3da17..1bb896c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,7 +20,9 @@ node_modules/
/history
/ERCSpecification
*.dbg.json
-/skills
+
+# Codex
+.codex
#drawio
*.bkp
diff --git a/AGENTS.md b/AGENTS.md
index a4f9878..b151852 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -24,18 +24,19 @@ Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule
| `RuleMaxTotalSupply` | Cap minting so total supply never exceeds a maximum |
| `RuleIdentityRegistry` | Check ERC-3643 identity registry for participant verification |
| `RuleSpenderWhitelist` / `RuleSpenderWhitelistOwnable2Step` | Allow `transferFrom` only when spender is whitelisted; direct transfers are always allowed |
-| `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender and recipient); frozenlist takes priority |
+| `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender, recipient, and spender for `transferFrom`); frozenlist takes priority |
| `RuleERC2980Ownable2Step` | Ownable2Step variant of RuleERC2980 |
-| `RuleConditionalTransferLight` | Require operator approval before each transfer |
+| `RuleConditionalTransferLight` | Require operator approval before each transfer; bound to exactly one token at a time (`bindToken` reverts if a token is already bound; use `unbindToken` first to migrate) |
| `RuleConditionalTransferLightOwnable2Step` | Owner-only approval and execution for conditional transfers |
| `AccessControlModuleStandalone` | Base RBAC module; admin implicitly holds all roles |
| `MetaTxModuleStandalone` | ERC-2771 meta-transaction support |
| `VersionModule` | Implements `IERC3643Version`; returns the contract version string |
## Dependencies (lib/)
-- `openzeppelin-contracts` v5.5.0 — `AccessControl`, `Ownable2Step`, `EnumerableSet`, `ERC2771Context`
+- `openzeppelin-contracts` v5.6.1 — `AccessControl`, `Ownable2Step`, `EnumerableSet`, `ERC2771Context`
+- `openzeppelin-contracts-upgradeable` v5.6.1
- `CMTAT` v3.0.0 — `IERC1404`, `IERC3643`, `IRuleEngine` interfaces
-- `RuleEngine` v3.0.0-rc0 — `IRule`, `RulesManagementModule`
+- `RuleEngine` v3.0.0-rc2 — `IRule`, `RulesManagementModule`
- `forge-std` — Foundry test utilities
Remappings are in `remappings.txt`; aliases used in source: `OZ/`, `CMTAT/`, `RuleEngine/`.
@@ -66,6 +67,7 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs).
- AccessControl variants must use `onlyRole(ROLE)` in `_authorize*()` methods (avoid direct `_checkRole`).
- AccessControl variants treat the default admin as having all roles via `hasRole`, but the admin may not appear in role member enumerations unless explicitly granted.
- All rules implement `IERC3643Version` via `VersionModule`; the current version string is `"0.2.0"`.
+- **ERC-165 interface IDs**: `type(IFoo).interfaceId` only XORs selectors defined directly on `IFoo` and does NOT include selectors from inherited interfaces. Always use the pre-computed library constants instead: `ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID` (from `CMTAT/library/`), `RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID` (from `CMTAT/library/`), and `RuleInterfaceId.IRULE_INTERFACE_ID` (from `RuleEngine/modules/library/`). If no pre-computed constant exists for an interface, define a flat mock interface that redeclares all functions from the full inheritance tree and use `type(IFooFlattened).interfaceId` to compute the correct value (see `lib/RuleEngine/src/mocks/IRuleInterfaceIdHelper.sol` for the established pattern).
- Batch add/remove operations are non-reverting (skip duplicates); single-item operations revert on invalid input.
- All `internal` functions should be marked `virtual`.
- Do not create git commits; provide commit messages only when requested.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6a0eefa..68490c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -43,9 +43,61 @@ Custom changelog tag: `Dependencies`, `Documentation`, `Testing`
- Update surya doc by running the 3 scripts in [./doc/script](./doc/script)
- Update changelog
-## v0.2.0 - TBD
+## v0.3.0 -
-Commit: `TBD`
+### Security
+
+- **H1 fix** — `RuleConditionalTransferLight`: enforced single-token binding by overriding `bindToken` to revert with `RuleConditionalTransferLight_TokenAlreadyBound` if a token is already bound. Eliminates cross-token approval replay and approval-draining attacks. Use `unbindToken` first to migrate to a new token.
+- **M1 fix** — Added `IERC7551Compliance` (`0x7157797f`), `IERC3643IComplianceContract` (validation rules), and the full ERC-3643 `ICompliance` ID via flat mock `IERC3643ComplianceFull` (`0x3144991c`) to all `supportsInterface` implementations. Silent `false` on ERC-165 introspection no longer occurs for compliant callers.
+
+### Added
+
+- `RuleConditionalTransferLightApprovalBase` — new abstract contract holding the pure approval state machine (approval counts, `approveTransfer`, `cancelTransferApproval`, `approvedCount`, and the `transferred` callback). No ERC-3643 / IRule knowledge.
+- `IERC3643ComplianceFull` (`src/mocks/IERC3643ComplianceFull.sol`) — flat mock interface redeclaring all eight ERC-3643 `ICompliance` functions; used to compute the correct ERC-165 ID (`0x3144991c`) since `type(IERC3643Compliance).interfaceId` only XORs directly-defined selectors.
+
+### Changed
+
+- `RuleConditionalTransferLightBase` refactored into two layers: `RuleConditionalTransferLightApprovalBase` (state machine) + `RuleConditionalTransferLightBase` (ERC-3643 / IRule compliance integration). Eliminates code duplication between the AccessControl and Ownable2Step variants.
+- `RuleConditionalTransferLightOwnable2Step` now inherits `ERC3643ComplianceModule` via the base (consistent with the AccessControl variant); `_authorizeTransferExecution` consolidated into the base and checks `isTokenBound(_msgSender())`.
+- `approveAndTransferIfAllowed` no longer takes a `token` parameter — bound token is retrieved directly via `getTokenBound()`.
+- `RuleConditionalTransferLightBase.approveAndTransferIfAllowed` now uses OpenZeppelin `SafeERC20.safeTransferFrom` to handle non-standard ERC-20 return behavior safely.
+- Removed unused custom error `RuleConditionalTransferLight_TransferFailed` from `RuleConditionalTransferLightInvariantStorage`.
+- Custom error `RuleConditionalTransferLight_TokenAddressZeroNotAllowed` renamed to `RuleConditionalTransferLight_TokenNotBound` for clarity.
+- `RuleERC2980` and `RuleERC2980Ownable2Step` constructors now include `allowBurn` and whitelist `address(0)` at deployment when enabled.
+- `RuleWhitelist` and `RuleWhitelistOwnable2Step` constructors now include `allowMintBurn`; when enabled, `address(0)` is pre-listed at deployment.
+- Solidity style guide ordering (type declarations → state variables → events → errors → modifiers → functions; constructor → external → public → internal → private) enforced across all `src/` contracts.
+- `supportsInterface` in `RuleConditionalTransferLight` and `RuleConditionalTransferLightOwnable2Step` now advertises `IERC7551Compliance` and the full ERC-3643 `ICompliance` interface ID instead of the narrow `IERC3643IComplianceContract`.
+- `supportsInterface` in `RuleTransferValidation` (cascades to all validation rules) now also advertises `IERC7551Compliance` and `IERC3643IComplianceContract`.
+- Update contract version to `0.3.0`
+
+### Dependencies
+
+- Update RuleEngine to `v3.0.0-rc2`.
+- Update OpenZeppelin Contracts to `v5.6.1`.
+- Update OpenZeppelin Contracts Upgradeable to `v5.6.1`.
+
+### Documentation
+
+- Wake Arena (Ackee Blockchain Security) AI-assisted static analysis report and project feedback added to `doc/security/audits/tools/v0.2.0/`.
+- README Security section updated with Wake Arena findings summary table.
+- README Access Control section updated to document intentional `DEFAULT_ADMIN_ROLE` implicit-role behaviour, `grantRole` no-op semantics, and off-chain monitoring guidance (I2).
+- `RuleERC2980` documentation updated to clarify that a frozen address acting as `transferFrom` spender is also blocked (code 62) (I1).
+- `RuleERC2980` documentation and README updated to document burn/redemption behavior and the new constructor `allowBurn` option.
+- `RuleWhitelist` documentation and README updated to document constructor `allowMintBurn` and zero-address mint/burn handling.
+- README updated to document Hardhat support for optional compilation and smoke testing alongside Foundry-first workflows.
+- `CLAUDE.md` / `AGENTS.md` convention added: always use pre-computed library constants for ERC-165 IDs; use a flat mock interface when no constant exists.
+
+### Testing
+
+- Added `RuleERC2980` constructor tests covering default burn-blocked behavior and `allowBurn=true` zero-address whitelisting.
+- Added `RuleWhitelist` constructor tests covering `allowMintBurn=true` zero-address pre-listing.
+- Added a Hardhat smoke test (`test/hardhat/smoke.test.js`) and npm scripts for Hardhat compile/smoke execution.
+- Updated `RuleConditionalTransferLightApproveAndTransfer` transfer-failure test to assert OpenZeppelin `SafeERC20` revert semantics.
+- Removed now-unused `RuleConditionalTransferLight_TransferFailed` declaration; no behavior change.
+
+## v0.2.0 - 2026-03-10
+
+Commit: [`d72a98a`](https://github.com/CMTA/Rules/commit/d72a98abbba29cd82a7056b59104e82ac65389e7)
### Added
diff --git a/CLAUDE.md b/CLAUDE.md
index a4f9878..b151852 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -24,18 +24,19 @@ Modular compliance-rule library for CMTAT / ERC-3643 security tokens. Each rule
| `RuleMaxTotalSupply` | Cap minting so total supply never exceeds a maximum |
| `RuleIdentityRegistry` | Check ERC-3643 identity registry for participant verification |
| `RuleSpenderWhitelist` / `RuleSpenderWhitelistOwnable2Step` | Allow `transferFrom` only when spender is whitelisted; direct transfers are always allowed |
-| `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender and recipient); frozenlist takes priority |
+| `RuleERC2980` | ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks sender, recipient, and spender for `transferFrom`); frozenlist takes priority |
| `RuleERC2980Ownable2Step` | Ownable2Step variant of RuleERC2980 |
-| `RuleConditionalTransferLight` | Require operator approval before each transfer |
+| `RuleConditionalTransferLight` | Require operator approval before each transfer; bound to exactly one token at a time (`bindToken` reverts if a token is already bound; use `unbindToken` first to migrate) |
| `RuleConditionalTransferLightOwnable2Step` | Owner-only approval and execution for conditional transfers |
| `AccessControlModuleStandalone` | Base RBAC module; admin implicitly holds all roles |
| `MetaTxModuleStandalone` | ERC-2771 meta-transaction support |
| `VersionModule` | Implements `IERC3643Version`; returns the contract version string |
## Dependencies (lib/)
-- `openzeppelin-contracts` v5.5.0 — `AccessControl`, `Ownable2Step`, `EnumerableSet`, `ERC2771Context`
+- `openzeppelin-contracts` v5.6.1 — `AccessControl`, `Ownable2Step`, `EnumerableSet`, `ERC2771Context`
+- `openzeppelin-contracts-upgradeable` v5.6.1
- `CMTAT` v3.0.0 — `IERC1404`, `IERC3643`, `IRuleEngine` interfaces
-- `RuleEngine` v3.0.0-rc0 — `IRule`, `RulesManagementModule`
+- `RuleEngine` v3.0.0-rc2 — `IRule`, `RulesManagementModule`
- `forge-std` — Foundry test utilities
Remappings are in `remappings.txt`; aliases used in source: `OZ/`, `CMTAT/`, `RuleEngine/`.
@@ -66,6 +67,7 @@ Foundry config: `foundry.toml` (solc 0.8.34, EVM prague, optimizer 200 runs).
- AccessControl variants must use `onlyRole(ROLE)` in `_authorize*()` methods (avoid direct `_checkRole`).
- AccessControl variants treat the default admin as having all roles via `hasRole`, but the admin may not appear in role member enumerations unless explicitly granted.
- All rules implement `IERC3643Version` via `VersionModule`; the current version string is `"0.2.0"`.
+- **ERC-165 interface IDs**: `type(IFoo).interfaceId` only XORs selectors defined directly on `IFoo` and does NOT include selectors from inherited interfaces. Always use the pre-computed library constants instead: `ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID` (from `CMTAT/library/`), `RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID` (from `CMTAT/library/`), and `RuleInterfaceId.IRULE_INTERFACE_ID` (from `RuleEngine/modules/library/`). If no pre-computed constant exists for an interface, define a flat mock interface that redeclares all functions from the full inheritance tree and use `type(IFooFlattened).interfaceId` to compute the correct value (see `lib/RuleEngine/src/mocks/IRuleInterfaceIdHelper.sol` for the established pattern).
- Batch add/remove operations are non-reverting (skip duplicates); single-item operations revert on invalid input.
- All `internal` functions should be marked `virtual`.
- Do not create git commits; provide commit messages only when requested.
diff --git a/README.md b/README.md
index 83a13f5..097c66c 100644
--- a/README.md
+++ b/README.md
@@ -20,8 +20,6 @@ Each rule can be used **standalone**, directly plugged into a CMTAT token, **or*
[TOC]
-
-
## Overview
The **RuleEngine** is an external smart contract that applies transfer restrictions to security tokens such as **CMTAT** or [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643)-compatible tokens through a RuleEngine.
@@ -64,7 +62,7 @@ forge test
| Component | Compatible Versions |
| ---------------- | ----------------------------------------- |
-| **Rules v0.1.0** | CMTAT ≥ v3.0.0 RuleEngine v3.0.0-rc1 |
+| **Rules v0.1.0** | CMTAT ≥ v3.0.0 RuleEngine v3.0.0-rc2 |
Each Rule implements the interface `IRuleEngine` defined in CMTAT.
@@ -72,10 +70,6 @@ This interface declares the ERC-3643 functions `transferred`(read-write) and `ca
## Specifications
-Draft ERC specifications maintained in this repository:
-
-- `ERCSpecification/erc-XXXX-transfer-context.md` - transfer context hook (fungible and non-fungible).
-
### ERC-3643
Each rule implements the following functions from the ERC-3643 `ICompliance`interface
@@ -85,9 +79,9 @@ function canTransfer(address _from, address _to, uint256 _amount) external view
function transferred(address _from, address _to, uint256 _amount) external;
```
-However, contrary to the RuleEngine, the whole interface is currently not implemented (e.g. `created`and `destroyed`) and as a result, the rule can not directly supported ERC-3643 token.
+However, contrary to the RuleEngine, the whole interface is currently not implemented (e.g. `created`and `destroyed`) and as a result, the rule can not directly support ERC-3643 token.
-The alternative to use a Rule with an ERC-3643 token is trough the RuleEngine, which implements the whole `ICompliance` interface.
+The alternative to use a Rule with an ERC-3643 token is through the RuleEngine, which implements the whole `ICompliance` interface.
### ERC-721/ERC-1155
@@ -136,9 +130,9 @@ function transferred(address spender, address from, address to, uint256 tokenId,
### Rule - Code list
-> It is very important that each rule uses an unique code
+> It is very important that each rule uses a unique code
-Here the list of codes used by the different rules
+Here is the list of codes used by the different rules
| Contract | Constant name | Value |
| ----------------------- | ------------------------------------ | ----- |
@@ -245,7 +239,7 @@ The RuleEngine can then:
Each rule can be directly plugged to a CMTAT token similar to a RuleEngine.
-Indeed, each rules implements the required interface (`IRuleEngine`) with notably the following function as entrypoint.
+Indeed, each rule implements the required interface (`IRuleEngine`) with notably the following function as entrypoint.
```solidity
function transferred(address from,address to,uint256 value)
@@ -278,7 +272,7 @@ interface IRuleEngine is IERC1404Extend, IERC7551Compliance, IERC3643IComplianc
#### RuleEngine
-For a RuleEngine, each rule implements also the required entry point similar to CMTAT, and as well some specific interface for the RuleEngine through the implementation of `IRule`interface dfeined in the RuleEngine repository
+For a RuleEngine, each rule implements also the required entry point similar to CMTAT, and as well some specific interface for the RuleEngine through the implementation of `IRule` interface defined in the RuleEngine repository.
```solidity
interface IRule is IRuleEngine {
@@ -366,7 +360,7 @@ Several rules are available in multiple access-control variants. Use the simples
| RuleMaxTotalSupply | Read-Only | ✘ | ✔ | ✔ | This rule limits minting so that the total supply never exceeds a configured maximum. |
| RuleIdentityRegistry | Read-Only | ✔ | ✔ | ✔ | This rule checks the ERC-3643 Identity Registry for transfer participants when configured. |
| RuleSpenderWhitelist | Read-Only | ✔ | ✔ | ✔ | This rule blocks `transferFrom` when the spender is not in the whitelist. Direct transfers are always allowed. |
-| RuleERC2980 | Read-Only | ✔ | ✔ | ✔ | ERC-2980 Swiss Compliant rule combining a whitelist (recipient-only) and a frozenlist (blocks both sender and recipient). Frozenlist takes priority over whitelist. |
+| RuleERC2980 | Read-Only | ✔ | ✔ | ✔ | ERC-2980 Swiss Compliant rule combining a whitelist (recipient-only) and a frozenlist (blocks sender, recipient, and spender for `transferFrom`). Frozenlist takes priority over whitelist. |
| RuleConditionalTransferLight | Read-Write | ✘ | ✔ | ✔ | This rule requires that transfers have to be approved by an operator before being executed. Each approval is consumed once and the same transfer can be approved multiple times. |
| [RuleConditionalTransfer](https://github.com/CMTA/RuleConditionalTransfer) (external) | Read-Write | ✘ | ✔ | ✘ (experimental rule) | Full-featured approval-based transfer rule implementing Swiss law *Vinkulierung*. Supports automatic approval after three months, automatic transfer execution, and a conditional whitelist for address pairs that bypass approval. Maintained in a separate repository. |
| [RuleSelf](https://github.com/rya-sge/ruleself) (community) | — | ✘ | — | ✘ (community project) | Use [Self](https://self.xyz), a zero-knowledge identity solution to determine which is allowed to interact with the token. Community-maintained rule project. Not developed or maintained by CMTA. |
@@ -391,25 +385,50 @@ Detailed technical documentation for each rule is available in [`doc/technical/`
### Operational Notes
-- `RuleIdentityRegistry` allows burns (`to == address(0)`) even if the sender is not verified. This matters only if the token allows self-burn.
-- `RuleSanctionsList` rejects zero address in `setSanctionListOracle`. Use `clearSanctionListOracle()` to disable checks.
-- `RuleIdentityRegistry` can be disabled with `clearIdentityRegistry()`, which allows all transfers to pass this rule.
-- Constructors for `RuleSanctionsList` and `RuleIdentityRegistry` accept a zero address to start in a disabled state.
-- `RuleMaxTotalSupply` trusts the configured `tokenContract` to return an accurate `totalSupply()`.
-- `RuleMaxTotalSupply` does not allow clearing the token contract; disable the rule by removing it from the RuleEngine or token.
-- `RuleWhitelistWrapper` requires child rules that implement `IAddressList`. Gas cost grows with the number of rules, and a wrapper with zero rules will reject all transfers.
-- `RuleSpenderWhitelist` only checks the spender in `transferFrom`; direct transfers always pass this rule.
-- Read-only rules still implement `transferred()` to comply with ERC-3643 and RuleEngine interfaces, but they do not change state.
-- `RuleConditionalTransferLight` approvals are keyed by `(from, to, value)` and are not nonce-based.
-- `RuleConditionalTransferLight` provides `approveAndTransferIfAllowed` to approve and immediately execute `transferFrom` when this rule has allowance; it assumes the token calls back `transferred()` during the transfer.
-- `RuleConditionalTransferLight` restricts `transferred()` to tokens bound via `bindToken` (ERC3643ComplianceModule).
-- `RuleConditionalTransferLight` exempts mints (`from == address(0)`) and burns (`to == address(0)`) from the approval requirement; `created` and `destroyed` delegate to `_transferred`, which returns early for those cases.
-- AccessControl variants use `onlyRole(ROLE)` in `_authorize*()` and internal helpers are marked `virtual`.
-- AccessControl variants use `AccessControlEnumerable`, so role members can be enumerated with `getRoleMember` / `getRoleMemberCount`. The default admin is treated as having all roles via `hasRole`, but may not appear in role member lists unless explicitly granted.
-- `forwarderIrrevocable` is accepted as-is (including `address(0)`), and is not validated against ERC-165 because some forwarders do not implement it.
-- `RuleERC2980` frozenlist takes priority over the whitelist: an address that is both whitelisted and frozen will be rejected.
-- `RuleERC2980` sender (`from`) does not need to be whitelisted; only the recipient (`to`) must be whitelisted for a transfer to succeed.
-- All rules implement `IERC3643Version` via `VersionModule` and expose a `version()` function returning `"0.2.0"`.
+#### RuleIdentityRegistry
+
+- `RuleIdentityRegistry`: allows burns (`to == address(0)`) even if the sender is not verified. This matters only if the token allows self-burn.
+- `RuleIdentityRegistry`: can be disabled with `clearIdentityRegistry()`, which allows all transfers to pass this rule.
+- `RuleIdentityRegistry`: constructor accepts `address(0)` to start in a disabled state.
+
+#### RuleSanctionsList
+
+- `RuleSanctionsList`: rejects zero address in `setSanctionListOracle`. Use `clearSanctionListOracle()` to disable checks.
+- `RuleSanctionsList`: constructor accepts `address(0)` to start in a disabled state.
+
+#### RuleMaxTotalSupply
+
+- `RuleMaxTotalSupply`: trusts the configured `tokenContract` to return an accurate `totalSupply()`.
+- `RuleMaxTotalSupply`: does not allow clearing the token contract; disable the rule by removing it from the RuleEngine or token.
+
+#### RuleWhitelistWrapper
+
+- `RuleWhitelistWrapper`: requires child rules that implement `IAddressList`. Gas cost grows with the number of rules, and a wrapper with zero rules rejects all transfers.
+
+#### RuleSpenderWhitelist
+
+- `RuleSpenderWhitelist`: only checks the spender in `transferFrom`; direct transfers always pass this rule.
+
+#### RuleERC2980
+
+- `RuleERC2980`: frozenlist takes priority over whitelist; an address that is both whitelisted and frozen is rejected.
+- `RuleERC2980`: a frozen address acting as `transferFrom` spender is also blocked (code 62), even if `from` and `to` are not frozen.
+- `RuleERC2980`: sender (`from`) does not need to be whitelisted; only recipient (`to`) must be whitelisted.
+
+#### RuleConditionalTransferLight
+
+- `RuleConditionalTransferLight`: approvals are keyed by `(from, to, value)` and are not nonce-based.
+- `RuleConditionalTransferLight`: `approveAndTransferIfAllowed` approves and immediately executes `transferFrom` when this rule has allowance; it assumes token callback to `transferred()`.
+- `RuleConditionalTransferLight`: `transferred()` is restricted to the single token bound via `bindToken`; second bind reverts with `RuleConditionalTransferLight_TokenAlreadyBound` until `unbindToken`.
+- `RuleConditionalTransferLight`: mints (`from == address(0)`) and burns (`to == address(0)`) are exempt from approval checks; `created` and `destroyed` delegate to `_transferred`.
+
+#### General notes
+
+- All validation rules: read-only rules still implement `transferred()` for ERC-3643 and RuleEngine compatibility, but do not change state.
+- All AccessControl variants: use `onlyRole(ROLE)` in `_authorize*()` and mark internal helpers `virtual`.
+- All AccessControl variants: use `AccessControlEnumerable`, so role members can be enumerated with `getRoleMember` / `getRoleMemberCount`; default admin is treated as having all roles via `hasRole`, but may not appear in role member lists unless explicitly granted.
+- All meta-tx-enabled rules: `forwarderIrrevocable` is accepted as-is (including `address(0)`) and is not validated against ERC-165 because some forwarders do not implement it.
+- All rules: implement `IERC3643Version` via `VersionModule` and expose `version()` returning `"0.3.0"`.
### Read-only (validation) rule
@@ -424,6 +443,8 @@ Only whitelisted addresses may hold or receive tokens.
- `to` is not whitelisted
The rule is read-only: it only checks stored state.
+- Constructor parameter `allowMintBurn` can pre-list `address(0)` for mint/burn flows.
+- `allowMintBurn = false` keeps legacy behavior (operator adds `address(0)` manually if needed).
**Example**
@@ -490,8 +511,14 @@ The operator sets `RuleBlacklist` on the token. The issuer tries to transfer to
Implements the [ERC-2980](https://eips.ethereum.org/EIPS/eip-2980) Swiss Compliant Asset Token transfer restriction using two independent address lists managed in a single rule:
- **Whitelist**: only whitelisted addresses may *receive* tokens. Senders do not need to be whitelisted and may freely transfer tokens they already hold.
-- **Frozenlist**: frozen addresses are completely blocked — they can neither send nor receive tokens.
-- **Priority**: frozenlist is checked first. If `from` or `to` is frozen, the transfer is rejected regardless of whitelist membership.
+- **Frozenlist**: frozen addresses are completely blocked — they can neither send nor receive tokens. Additionally, a frozen address acting as a `transferFrom` spender will have the transfer rejected (code 62), even if `from` and `to` are not frozen.
+- **Priority**: frozenlist is checked first. If `from`, `to`, or `spender` is frozen, the transfer is rejected regardless of whitelist membership.
+- **Burn/redemption handling**: burns (`to == address(0)`) follow the same recipient whitelist check. Constructor parameter `allowBurn` controls whether `address(0)` is whitelisted at deployment.
+ - `allowBurn = false` (default-safe): burns are blocked with code 63.
+ - `allowBurn = true`: burns are allowed because `address(0)` is whitelisted.
+- Constructors:
+ - `RuleERC2980(address admin, address forwarderIrrevocable, bool allowBurn)`
+ - `RuleERC2980Ownable2Step(address owner, address forwarderIrrevocable, bool allowBurn)`

@@ -508,7 +535,7 @@ Restriction codes:
**Usage scenario**
-The operator deploys `RuleERC2980`. The issuer whitelists Alice with `addWhitelistAddress(Alice)`. A transfer to Alice succeeds. The compliance officer freezes Bob with `addFrozenlistAddress(Bob)`. Any transfer from or to Bob is now rejected even if Bob was previously whitelisted.
+The operator deploys `RuleERC2980` and chooses `allowBurn` according to the redemption policy. The issuer whitelists Alice with `addWhitelistAddress(Alice)`. A transfer to Alice succeeds. The compliance officer freezes Bob with `addFrozenlistAddress(Bob)`. Any transfer from or to Bob is now rejected even if Bob was previously whitelisted.
#### Sanction list with Chainalysis
@@ -518,7 +545,7 @@ Uses the [Chainalysis](https://www.chainalysis.com/) Oracle to reject transfers
- Documentation: *Chainalysis Oracle for sanctions screening*
- If `from` or `to` is sanctioned, transfer is rejected.
-Documentation and the contracts addresses are available here: [Chainalysis oracle for sanctions screening](https://go.chainalysis.com/chainalysis-oracle-docs.html).
+The documentation and contract addresses are available here: [Chainalysis oracle for sanctions screening](https://go.chainalysis.com/chainalysis-oracle-docs.html).

@@ -562,17 +589,23 @@ This rule requires that transfers must be approved by an operator before being e
**Usage scenario**
-An operator calls `approveTransfer(from, to, value)`. The compliance manager binds the token with `bindToken(token)`. The token calls `detectTransferRestriction` (passes) and later `transferred` to consume the approval. Without approval, `detectTransferRestriction` returns code 46 and the transfer is rejected. The operator can revoke with `cancelTransferApproval`.
+An operator calls `approveTransfer(from, to, value)`. The compliance manager binds exactly one token with `bindToken(token)`; attempting to bind a second token reverts. The token calls `detectTransferRestriction` (passes) and later `transferred` to consume the approval. Without approval, `detectTransferRestriction` returns code 46 and the transfer is rejected. The operator can revoke with `cancelTransferApproval`. To migrate to a different token, the compliance manager must first call `unbindToken` before binding the new one.
## Access Control
-The modules `AccessControlModuleStandalone` allows to implement RBAC access control by inheriting from the contract `AccessControl`from OpenZeppelin.
+The module `AccessControlModuleStandalone` implements RBAC access control by inheriting from OpenZeppelin's `AccessControlEnumerable`.
+
+Each rule implements its own access control by inheriting from `AccessControlModuleStandalone`. The default admin is the address passed as `admin` to the constructor at deployment.
-This module overrides the OpenZeppelin function `hasRole`to give by default all the roles to the `admin`.
+#### `DEFAULT_ADMIN_ROLE` implicit role behaviour
-Each rule implements its own access control by inheriting from the module `AccessControlModuleStandalone`.
+`AccessControlModuleStandalone` overrides OpenZeppelin's `hasRole` so that any account holding `DEFAULT_ADMIN_ROLE` returns `true` for **every** role check. This is intentional: the OpenZeppelin `DEFAULT_ADMIN_ROLE` holder can already grant itself any role at any time, so treating it as implicitly holding all roles from the start removes unnecessary ceremony and makes access management easier in practice.
-For all rules, the default admin is the address put in argument(`admin`) inside the constructor and set when the contract is deployed.
+Practical consequences integrators must be aware of:
+
+- **`grantRole` to a default admin is a no-op.** `_grantRole` checks `!hasRole(role, account)` before writing storage; since the admin already returns `true` via the override, the storage write and the `RoleGranted` event are skipped. The admin will **not** appear in `getRoleMember` / `getRoleMemberCount` enumerations for non-default roles unless the role was explicitly granted before the admin was set.
+- **`revokeRole` / `renounceRole`** on a non-default role for a default admin are misleading. They emit `RoleRevoked` and clear the storage flag, but `hasRole` continues to return `true` because the account still holds `DEFAULT_ADMIN_ROLE`. The effective privilege is unchanged. To fully remove access, `DEFAULT_ADMIN_ROLE` itself must be revoked.
+- **Off-chain monitoring** should use `hasRole` queries, not role-membership events or enumeration, to determine the effective privileges of admin accounts.
See also [docs.openzeppelin.com - AccessControl](https://docs.openzeppelin.com/contracts/5.x/api/access#AccessControl)
@@ -639,15 +672,19 @@ Here are the settings for [Hardhat](https://hardhat.org) and [Foundry](https://g
- Forge std [v1.12.0](https://github.com/foundry-rs/forge-std/releases/tag/v1.12.0 )
- - OpenZeppelin Contracts (submodule) [v5.6.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.6.0)
+ - OpenZeppelin Contracts (submodule) [v5.6.1](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.6.1)
+
+ - OpenZeppelin Contracts Upgradeable (submodule) [v5.6.1](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases/tag/v5.6.1)
- CMTAT [v3.2.0](https://github.com/CMTA/CMTAT/releases/tag/v3.2.0)
- - RuleEngine [v3.0.0-rc1](https://github.com/CMTA/RuleEngine/releases/tag/v3.0.0-rc1)
+ - RuleEngine [v3.0.0-rc2](https://github.com/CMTA/RuleEngine/releases/tag/v3.0.0-rc2)
### Toolchain installation
-The contracts are developed and tested with [Foundry](https://book.getfoundry.sh), a smart contract development toolchain.
+This repository is primarily developed and tested with [Foundry](https://book.getfoundry.sh), a smart contract development toolchain.
+
+Hardhat configuration is also present to support contract compilation and a small smoke test with Hardhat.
To install the Foundry suite, please refer to the official instructions in the [Foundry book](https://book.getfoundry.sh/getting-started/installation).
@@ -677,6 +714,12 @@ The official documentation is available in the Foundry [website](https://book.ge
forge build
```
+Hardhat compilation (optional):
+
+```bash
+npm run hardhat:compile
+```
+
### Contract size
```bash
@@ -691,6 +734,12 @@ You can run the tests with
forge test
```
+Hardhat smoke test (optional):
+
+```bash
+npm run hardhat:test:smoke
+```
+
To run a specific test, use
```bash
@@ -729,6 +778,8 @@ Gas usage is tracked in two complementary files:
### Coverage
+
+
A code coverage is available in [index.html](./doc/coverage/coverage/index.html).
* Perform a code coverage
@@ -746,14 +797,14 @@ forge coverage --report lcov
- Generate `index.html`
```bash
-forge coverage --no-match-coverage "(script|mocks|test)" --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage
+forge coverage --no-match-coverage "(script|mocks|test)" --report lcov && genhtml lcov.info --branch-coverage --prefix "$PWD/" --output-dir coverage
```
-See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU) & [Foundry forge coverage](
+See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU) & [Foundry forge coverage](https://www.rareskills.io/post/foundry-forge-coverage)
### Other
-Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.*
+Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry consists of:
@@ -1239,13 +1290,14 @@ Checks the listing status of multiple addresses in a single call.
##### Null address
It is possible to add the null address (0x0) to the address list. In a whitelist, this enables mint/burn flows (since `from`/`to` can be zero). In a blacklist, adding `0x0` blocks mint/burn.
+For `RuleWhitelist`, you can also pre-list `0x0` at deployment using the constructor parameter `allowMintBurn=true`.
##### Duplicate address
**addAddress**
If the address already exists, the transaction is reverted to save gas.
**addAddresses**
-If one of addresses already exist, there is no change for this address. The transaction remains valid (no revert).
+If one of the addresses already exist, there is no change for this address. The transaction remains valid (no revert).
##### NonExistent Address
@@ -1606,13 +1658,13 @@ Removes one approval for the transfer.
#### approveAndTransferIfAllowed
```solidity
-function approveAndTransferIfAllowed(address token, address from, address to, uint256 value)
+function approveAndTransferIfAllowed(address from, address to, uint256 value)
public
onlyTransferApprover
returns (bool)
```
-Approves then calls `transferFrom` using this rule as spender.
+Approves then calls `SafeERC20.safeTransferFrom` on the bound token using this rule as spender.
#### approvedCount
@@ -1625,33 +1677,33 @@ function approvedCount(address from, address to, uint256 value)
Returns the number of approvals for the transfer hash.
-
-
## Security
### Automated Analysis
-#### Aderyn (v0.2.0)
+Latest tool outputs for this release cycle (including feedback documents) are available in [`doc/security/audits/tools/v0.3.0/`](./doc/security/audits/tools/v0.3.0/).
+`v0.3.0` cleanup: removed unused `RuleConditionalTransferLight_TransferFailed` custom error after SafeERC20 migration.
+
+#### Aderyn (v0.3.0)
-Static analysis was performed with [Aderyn](https://github.com/Cyfrin/aderyn). The full report and the project team's feedback are available in [`doc/security/audits/tools/v0.2.0/`](./doc/security/audits/tools/v0.2.0/).
+Static analysis was performed with [Aderyn](https://github.com/Cyfrin/aderyn). The full report and the project team's feedback are available in [`doc/security/audits/tools/v0.3.0/`](./doc/security/audits/tools/v0.3.0/).
| ID | Title | Instances | Verdict |
|---|---|---|---|
-| L-1 | Centralization Risk | 41 | Acknowledged — by design (regulated token issuer model) |
-| L-2 | Unsafe ERC20 Operation | 1 | Acknowledged — return value already checked with `require` |
-| L-3 | Unspecific Solidity Pragma | 48 | Acknowledged — intentional for a library |
-| L-4 | Address State Variable Set Without Checks | 1 | False positive — check enforced in public-facing function |
-| L-5 | PUSH0 Opcode | 48 | Acknowledged — project targets Prague EVM |
-| L-6 | Modifier Invoked Only Once | 2 | Acknowledged — template method pattern; inlining would break abstraction |
-| L-7 | Empty Block | 34 | Acknowledged — `_authorize*()` hooks use modifier; `created()`/`destroyed()` are intentional no-ops |
-| L-8 | Costly Operations Inside Loop | 6 | Acknowledged — unavoidable (`EnumerableSet` requires one `SSTORE` per element) |
-| L-9 | Unchecked Return | 13 | False positive — all instances are `void` calls, checked in caller, or intentionally ignored |
+| L-1 | Centralization Risk | 46 | Acknowledged — by design (regulated token issuer model) |
+| L-2 | Unspecific Solidity Pragma | 54 | Acknowledged — intentional for a library |
+| L-3 | Address State Variable Set Without Checks | 1 | False positive — check enforced in public-facing function |
+| L-4 | PUSH0 Opcode | 54 | Acknowledged — project targets Prague EVM |
+| L-5 | Modifier Invoked Only Once | 2 | Acknowledged — template method pattern; inlining would break abstraction |
+| L-6 | Empty Block | 38 | Acknowledged — `_authorize*()` hooks use modifiers; intentional no-op implementations in required interface paths |
+| L-7 | Costly operations inside loop | 6 | Acknowledged — unavoidable (`EnumerableSet` requires one `SSTORE` per element) |
+| L-8 | Unchecked Return | 13 | Mixed — mostly false positives (`void` helpers or pre-checked single-item paths); constructor `_grantRole` intentionally ignored |
No high-severity issues were reported.
-#### Slither (v0.2.0)
+#### Slither (v0.3.0)
-Static analysis was performed with [Slither](https://github.com/crytic/slither). The full report and the project team's feedback are available in [`doc/security/audits/tools/v0.2.0/`](./doc/security/audits/tools/v0.2.0/).
+Static analysis was performed with [Slither](https://github.com/crytic/slither). The full report and the project team's feedback are available in [`doc/security/audits/tools/v0.3.0/`](./doc/security/audits/tools/v0.3.0/).
| Category | Severity | Instances | Verdict |
|---|---|---|---|
@@ -1659,10 +1711,22 @@ Static analysis was performed with [Slither](https://github.com/crytic/slither).
| unused-return | Medium | 6 | False positive — existence pre-checked at public layer before calling internal helper |
| calls-loop | Low | 16 | Acknowledged — by design; wrapper must query each child rule; child rules are read-only |
| assembly | Informational | 1 | Acknowledged — intentional gas optimisation in `_transferHash`; minimal and well-scoped |
-| missing-inheritance | Informational | 1 | Acknowledged — `TotalSupplyMock` is a test-only mock; strict interface declaration unnecessary |
| naming-convention | Informational | 2 | Acknowledged — parameter names match ERC-2980 spec |
| unindexed-event-address | Informational | 2 | Out of scope (both in `lib/RuleEngine`); `IAddressList` events previously fixed |
-| unused-state | Informational | 60 | False positive — `RuleNFTAdapter` constants used in base dispatch logic; Slither per-contract analysis limitation |
+| unused-state | Informational | 8 | False positive — `RuleNFTAdapter` constants used in base dispatch logic; Slither per-contract analysis limitation |
+
+#### Wake Arena (v0.2.0)
+
+AI-assisted static analysis was performed with [Wake Arena](https://getwake.io) by Ackee Blockchain Security. The full report and the project team's feedback are available in [`doc/security/audits/tools/v0.2.0/`](./doc/security/audits/tools/v0.2.0/).
+
+*Ackee Blockchain Security, Wake Arena AI Report | CMTA: Rules, March 16, 2026 18:00 UTC.*
+
+| ID | Title | Severity | Confidence | Verdict |
+|---|---|---|---|---|
+| H-1 | ConditionalTransferLight approvals not scoped by token | High | High | Fixed — single-token binding enforced in `bindToken`; `RuleConditionalTransferLight_TokenAlreadyBound` error added |
+| M-1 | Incomplete `supportsInterface` breaks ERC-165 discovery | Medium | High | Fixed — pre-computed constants + `IERC7551Compliance` + full ERC-3643 `ICompliance` ID (`IERC3643ComplianceFull`, `0x3144991c`) added |
+| I-1 | RuleERC2980 docs omit frozen spender on `transferFrom` | Informational | High | Fixed (doc only) — README, `AGENTS.md`, and `CLAUDE.md` updated to document spender freeze path |
+| I-2 | `hasRole` override: admin implicitly passes all role checks | Informational | High | Fixed (doc only) — dedicated section added to README documenting intentional design and off-chain monitoring guidance |
## Intellectual property
diff --git a/doc/coverage/coverage.png b/doc/coverage/coverage.png
new file mode 100644
index 0000000..5535814
Binary files /dev/null and b/doc/coverage/coverage.png differ
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html
deleted file mode 100644
index c5cb892..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-b.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/modules
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- VersionModule.sol
-
-
-
- 100.0 %
- 2 / 2
- 100.0 %
- 1 / 1
- -
- 0 / 0
-
-
- AccessControlModuleStandalone.sol
-
-
-
- 100.0 %
- 7 / 7
- 100.0 %
- 2 / 2
- 100.0 %
- 4 / 4
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html
deleted file mode 100644
index f5b2551..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-f.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/modules
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- VersionModule.sol
-
-
-
- 100.0 %
- 2 / 2
- 100.0 %
- 1 / 1
- -
- 0 / 0
-
-
- AccessControlModuleStandalone.sol
-
-
-
- 100.0 %
- 7 / 7
- 100.0 %
- 2 / 2
- 100.0 %
- 4 / 4
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html
deleted file mode 100644
index cd1b8a4..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index-sort-l.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/modules
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- VersionModule.sol
-
-
-
- 100.0 %
- 2 / 2
- 100.0 %
- 1 / 1
- -
- 0 / 0
-
-
- AccessControlModuleStandalone.sol
-
-
-
- 100.0 %
- 7 / 7
- 100.0 %
- 2 / 2
- 100.0 %
- 4 / 4
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html
deleted file mode 100644
index 469987d..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/index.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/modules
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- AccessControlModuleStandalone.sol
-
-
-
- 100.0 %
- 7 / 7
- 100.0 %
- 2 / 2
- 100.0 %
- 4 / 4
-
-
- VersionModule.sol
-
-
-
- 100.0 %
- 2 / 2
- 100.0 %
- 1 / 1
- -
- 0 / 0
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html
deleted file mode 100644
index 92fa7b0..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html
deleted file mode 100644
index 0ccd4a1..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.func.html
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html
deleted file mode 100644
index 99f53d0..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html
deleted file mode 100644
index fdf58b9..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html
deleted file mode 100644
index ae4276f..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-b.html
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleConditionalTransferLightBase.sol
-
-
-
- 100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html
deleted file mode 100644
index 461d0f6..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-f.html
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleConditionalTransferLightBase.sol
-
-
-
- 100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html
deleted file mode 100644
index 55bb533..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index-sort-l.html
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleConditionalTransferLightBase.sol
-
-
-
- 100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html b/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html
deleted file mode 100644
index a47f107..0000000
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/index.html
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
- LCOV - lcov.info - ../../../src/rules/operation/abstract
-
-
-
-
-
-
- LCOV - code coverage report
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleConditionalTransferLightBase.sol
-
-
-
- 100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
-
-
-
-
-
-
-
-
-
-
diff --git a/doc/coverage/coverage/index-sort-b.html b/doc/coverage/coverage/index-sort-b.html
index 1c4e1f3..1109724 100644
--- a/doc/coverage/coverage/index-sort-b.html
+++ b/doc/coverage/coverage/index-sort-b.html
@@ -31,26 +31,26 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
@@ -82,31 +82,31 @@
Branches
- deployment
+ src/rules/operation
100.0 %
- 133 / 133
+ 18 / 18
100.0 %
- 79 / 79
+ 6 / 6
-
0 / 0
- ../../../src/rules/operation
+ src/rules/validation/deployment
100.0 %
- 16 / 16
- 100.0 %
- 9 / 9
+ 133 / 133
100.0 %
- 2 / 2
+ 79 / 79
+ -
+ 0 / 0
- ../../../src/modules
+ src/modules
@@ -118,7 +118,7 @@
4 / 4
- abstract/RuleERC2980
+ src/rules/validation/abstract/RuleERC2980
@@ -130,52 +130,52 @@
8 / 8
- abstract/RuleAddressSet
+ src/rules/validation/abstract/RuleAddressSet
-
+
- 100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 96.3 %
+ 52 / 54
+ 90.5 %
+ 19 / 21
100.0 %
8 / 8
- abstract/core
+ src/rules/validation/abstract/core
-
+
- 100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 93.3 %
+ 56 / 60
+ 82.6 %
+ 19 / 23
100.0 %
14 / 14
- ../../../src/rules/operation/abstract
+ src/rules/operation/abstract
-
+
+ 97.4 %
+ 75 / 77
+ 91.7 %
+ 22 / 24
100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
+ 16 / 16
- abstract/base
+ src/rules/validation/abstract/base
-
+
+ 97.7 %
+ 385 / 394
+ 92.4 %
+ 110 / 119
100.0 %
- 378 / 378
- 100.0 %
- 109 / 109
- 100.0 %
- 109 / 109
+ 111 / 111
diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html
index a5d5163..a03f87b 100644
--- a/doc/coverage/coverage/index-sort-f.html
+++ b/doc/coverage/coverage/index-sort-f.html
@@ -31,26 +31,26 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
@@ -82,79 +82,91 @@
Branches
- ../../../src/modules
+ src/rules/validation/abstract/core
-
+
+ 93.3 %
+ 56 / 60
+ 82.6 %
+ 19 / 23
100.0 %
- 9 / 9
- 100.0 %
- 3 / 3
+ 14 / 14
+
+
+ src/rules/validation/abstract/RuleAddressSet
+
+
+
+ 96.3 %
+ 52 / 54
+ 90.5 %
+ 19 / 21
100.0 %
- 4 / 4
+ 8 / 8
- ../../../src/rules/operation
+ src/rules/operation/abstract
-
+
+ 97.4 %
+ 75 / 77
+ 91.7 %
+ 22 / 24
100.0 %
16 / 16
- 100.0 %
- 9 / 9
- 100.0 %
- 2 / 2
- abstract/RuleERC2980
+ src/rules/validation/abstract/base
-
+
+ 97.7 %
+ 385 / 394
+ 92.4 %
+ 110 / 119
100.0 %
- 36 / 36
- 100.0 %
- 12 / 12
- 100.0 %
- 8 / 8
+ 111 / 111
- ../../../src/rules/operation/abstract
+ src/modules
100.0 %
- 66 / 66
+ 9 / 9
100.0 %
- 18 / 18
+ 3 / 3
100.0 %
- 14 / 14
+ 4 / 4
- abstract/core
+ src/rules/operation
100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 18 / 18
100.0 %
- 14 / 14
+ 6 / 6
+ -
+ 0 / 0
- abstract/RuleAddressSet
+ src/rules/validation/abstract/RuleERC2980
100.0 %
- 52 / 52
+ 36 / 36
100.0 %
- 19 / 19
+ 12 / 12
100.0 %
8 / 8
- deployment
+ src/rules/validation/deployment
@@ -165,18 +177,6 @@
-
0 / 0
-
- abstract/base
-
-
-
- 100.0 %
- 378 / 378
- 100.0 %
- 109 / 109
- 100.0 %
- 109 / 109
-
diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html
index c3bb25f..7f305a4 100644
--- a/doc/coverage/coverage/index-sort-l.html
+++ b/doc/coverage/coverage/index-sort-l.html
@@ -31,26 +31,26 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
@@ -82,79 +82,91 @@
Branches
- ../../../src/modules
+ src/rules/validation/abstract/core
-
+
+ 93.3 %
+ 56 / 60
+ 82.6 %
+ 19 / 23
100.0 %
- 9 / 9
- 100.0 %
- 3 / 3
+ 14 / 14
+
+
+ src/rules/validation/abstract/RuleAddressSet
+
+
+
+ 96.3 %
+ 52 / 54
+ 90.5 %
+ 19 / 21
100.0 %
- 4 / 4
+ 8 / 8
- ../../../src/rules/operation
+ src/rules/operation/abstract
-
+
+ 97.4 %
+ 75 / 77
+ 91.7 %
+ 22 / 24
100.0 %
16 / 16
- 100.0 %
- 9 / 9
- 100.0 %
- 2 / 2
- abstract/RuleERC2980
+ src/rules/validation/abstract/base
-
+
+ 97.7 %
+ 385 / 394
+ 92.4 %
+ 110 / 119
100.0 %
- 36 / 36
- 100.0 %
- 12 / 12
- 100.0 %
- 8 / 8
+ 111 / 111
- abstract/core
+ src/modules
100.0 %
- 52 / 52
+ 9 / 9
100.0 %
- 19 / 19
+ 3 / 3
100.0 %
- 14 / 14
+ 4 / 4
- abstract/RuleAddressSet
+ src/rules/operation
100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 18 / 18
100.0 %
- 8 / 8
+ 6 / 6
+ -
+ 0 / 0
- ../../../src/rules/operation/abstract
+ src/rules/validation/abstract/RuleERC2980
100.0 %
- 66 / 66
+ 36 / 36
100.0 %
- 18 / 18
+ 12 / 12
100.0 %
- 14 / 14
+ 8 / 8
- deployment
+ src/rules/validation/deployment
@@ -165,18 +177,6 @@
-
0 / 0
-
- abstract/base
-
-
-
- 100.0 %
- 378 / 378
- 100.0 %
- 109 / 109
- 100.0 %
- 109 / 109
-
diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html
index dde6e42..0394a54 100644
--- a/doc/coverage/coverage/index.html
+++ b/doc/coverage/coverage/index.html
@@ -31,26 +31,26 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
@@ -82,7 +82,7 @@
Branches
- ../../../src/modules
+ src/modules
@@ -94,43 +94,43 @@
4 / 4
- ../../../src/rules/operation
+ src/rules/operation
100.0 %
- 16 / 16
- 100.0 %
- 9 / 9
+ 18 / 18
100.0 %
- 2 / 2
+ 6 / 6
+ -
+ 0 / 0
- ../../../src/rules/operation/abstract
+ src/rules/operation/abstract
-
+
+ 97.4 %
+ 75 / 77
+ 91.7 %
+ 22 / 24
100.0 %
- 66 / 66
- 100.0 %
- 18 / 18
- 100.0 %
- 14 / 14
+ 16 / 16
- abstract/RuleAddressSet
+ src/rules/validation/abstract/RuleAddressSet
-
+
- 100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 96.3 %
+ 52 / 54
+ 90.5 %
+ 19 / 21
100.0 %
8 / 8
- abstract/RuleERC2980
+ src/rules/validation/abstract/RuleERC2980
@@ -142,31 +142,31 @@
8 / 8
- abstract/base
+ src/rules/validation/abstract/base
-
+
+ 97.7 %
+ 385 / 394
+ 92.4 %
+ 110 / 119
100.0 %
- 378 / 378
- 100.0 %
- 109 / 109
- 100.0 %
- 109 / 109
+ 111 / 111
- abstract/core
+ src/rules/validation/abstract/core
-
+
- 100.0 %
- 52 / 52
- 100.0 %
- 19 / 19
+ 93.3 %
+ 56 / 60
+ 82.6 %
+ 19 / 23
100.0 %
14 / 14
- deployment
+ src/rules/validation/deployment
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html
similarity index 63%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html
rename to doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html
index e3e217e..d4a9571 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol - functions
-
+ LCOV - lcov.info - src/modules/AccessControlModuleStandalone.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func.html
similarity index 63%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html
rename to doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func.html
index be2519d..18223ea 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.func.html
+++ b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol - functions
-
+ LCOV - lcov.info - src/modules/AccessControlModuleStandalone.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.gcov.html
similarity index 74%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html
rename to doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.gcov.html
index a435a7b..494c0e8 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/AccessControlModuleStandalone.sol.gcov.html
+++ b/doc/coverage/coverage/src/modules/AccessControlModuleStandalone.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/AccessControlModuleStandalone.sol
-
+ LCOV - lcov.info - src/modules/AccessControlModuleStandalone.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -74,54 +74,58 @@
3 : : pragma solidity ^0.8.20;
4 : :
5 : : /* ==== OpenZeppelin === */
- 6 : : import {AccessControl} from "OZ/access/AccessControl.sol";
- 7 : : import {IAccessControl} from "OZ/access/IAccessControl.sol";
- 8 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+ 6 : : import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
+ 7 : : import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
+ 8 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
9 : :
10 : : abstract contract AccessControlModuleStandalone is AccessControlEnumerable {
11 : : error AccessControlModuleStandalone_AddressZeroNotAllowed();
- 12 : : /* ============ Constructor ============ */
- 13 : : /**
- 14 : : * @notice Assigns the provided address as the default admin.
- 15 : : * @dev
- 16 : : * - Reverts if `admin` is the zero address.
- 17 : : * - Grants `DEFAULT_ADMIN_ROLE` to `admin`.
- 18 : : * The return value of `_grantRole` is intentionally ignored, as it returns `false`
- 19 : : * only when the role was already granted.
- 20 : : *
- 21 : : * @param admin The address that will receive the `DEFAULT_ADMIN_ROLE`.
- 22 : : */
- 23 : :
- 24 : 421 : constructor(address admin) {
- 25 [ + + ]: 421 : require(admin != address(0), AccessControlModuleStandalone_AddressZeroNotAllowed());
- 26 : : // we don't check the return value
- 27 : : // _grantRole attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
- 28 : : // return false only if the admin has already the role
- 29 : 415 : _grantRole(DEFAULT_ADMIN_ROLE, admin);
- 30 : : }
- 31 : :
- 32 : : /*//////////////////////////////////////////////////////////////
- 33 : : PUBLIC/EXTERNAL FUNCTIONS
- 34 : : //////////////////////////////////////////////////////////////*/
- 35 : : /**
- 36 : : * @dev Returns `true` if `account` has been granted `role`.
- 37 : : */
- 38 : 531 : function hasRole(bytes32 role, address account)
- 39 : : public
- 40 : : view
- 41 : : virtual
- 42 : : override(AccessControl, IAccessControl)
- 43 : : returns (bool)
- 44 : : {
- 45 : : // Dev note: default admin is treated as having all roles but may not appear in enumerable role members.
- 46 : : // The Default Admin has all roles
- 47 [ + + ]: 3534 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
- 48 : 3021 : return true;
- 49 : : } else {
- 50 : 513 : return AccessControl.hasRole(role, account);
- 51 : : }
- 52 : : }
- 53 : : }
+ 12 : :
+ 13 : : /*//////////////////////////////////////////////////////////////
+ 14 : : CONSTRUCTOR
+ 15 : : //////////////////////////////////////////////////////////////*/
+ 16 : :
+ 17 : : /**
+ 18 : : * @notice Assigns the provided address as the default admin.
+ 19 : : * @dev
+ 20 : : * - Reverts if `admin` is the zero address.
+ 21 : : * - Grants `DEFAULT_ADMIN_ROLE` to `admin`.
+ 22 : : * The return value of `_grantRole` is intentionally ignored, as it returns `false`
+ 23 : : * only when the role was already granted.
+ 24 : : *
+ 25 : : * @param admin The address that will receive the `DEFAULT_ADMIN_ROLE`.
+ 26 : : */
+ 27 : 430 : constructor(address admin) {
+ 28 [ + + ]: 430 : require(admin != address(0), AccessControlModuleStandalone_AddressZeroNotAllowed());
+ 29 : : // we don't check the return value
+ 30 : : // _grantRole attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
+ 31 : : // return false only if the admin has already the role
+ 32 : 424 : _grantRole(DEFAULT_ADMIN_ROLE, admin);
+ 33 : : }
+ 34 : :
+ 35 : : /*//////////////////////////////////////////////////////////////
+ 36 : : PUBLIC FUNCTIONS
+ 37 : : //////////////////////////////////////////////////////////////*/
+ 38 : :
+ 39 : : /**
+ 40 : : * @dev Returns `true` if `account` has been granted `role`.
+ 41 : : */
+ 42 : 540 : function hasRole(bytes32 role, address account)
+ 43 : : public
+ 44 : : view
+ 45 : : virtual
+ 46 : : override(AccessControl, IAccessControl)
+ 47 : : returns (bool)
+ 48 : : {
+ 49 : : // Dev note: default admin is treated as having all roles but may not appear in enumerable role members.
+ 50 : : // The Default Admin has all roles
+ 51 [ + + ]: 3627 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
+ 52 : 3104 : return true;
+ 53 : : } else {
+ 54 : 523 : return AccessControl.hasRole(role, account);
+ 55 : : }
+ 56 : : }
+ 57 : : }
@@ -129,7 +133,7 @@
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html
rename to doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html
index 80489dc..5154c91 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/VersionModule.sol - functions
-
+ LCOV - lcov.info - src/modules/VersionModule.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html b/doc/coverage/coverage/src/modules/VersionModule.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html
rename to doc/coverage/coverage/src/modules/VersionModule.sol.func.html
index f548b23..df259b7 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.func.html
+++ b/doc/coverage/coverage/src/modules/VersionModule.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/VersionModule.sol - functions
-
+ LCOV - lcov.info - src/modules/VersionModule.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html b/doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html
similarity index 76%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html
rename to doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html
index ebeafe9..10bbfc1 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/modules/VersionModule.sol.gcov.html
+++ b/doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/modules/VersionModule.sol
-
+ LCOV - lcov.info - src/modules/VersionModule.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -79,13 +79,17 @@
8 : : * @notice Exposes the contract version as required by ERC-3643.
9 : : */
10 : : abstract contract VersionModule is IERC3643Version {
- 11 : : string private constant VERSION = "0.2.0";
+ 11 : : string private constant VERSION = "0.3.0";
12 : :
- 13 : : /// @inheritdoc IERC3643Version
- 14 : 7 : function version() public view virtual override returns (string memory version_) {
- 15 : 7 : return VERSION;
- 16 : : }
- 17 : : }
+ 13 : : /*//////////////////////////////////////////////////////////////
+ 14 : : PUBLIC FUNCTIONS
+ 15 : : //////////////////////////////////////////////////////////////*/
+ 16 : :
+ 17 : : /// @inheritdoc IERC3643Version
+ 18 : 7 : function version() public view virtual override returns (string memory version_) {
+ 19 : 7 : return VERSION;
+ 20 : : }
+ 21 : : }
@@ -93,7 +97,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html b/doc/coverage/coverage/src/modules/index-sort-b.html
similarity index 81%
rename from doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html
rename to doc/coverage/coverage/src/modules/index-sort-b.html
index bb7e3fe..b5c8072 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-b.html
+++ b/doc/coverage/coverage/src/modules/index-sort-b.html
@@ -4,7 +4,7 @@
- LCOV - lcov.info - abstract/RuleAddressSet
+ LCOV - lcov.info - src/modules
@@ -19,7 +19,7 @@
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,8 +49,8 @@
-
-
+
+
@@ -82,26 +82,26 @@
Branches
- RuleAddressSet.sol
+ VersionModule.sol
100.0 %
- 34 / 34
+ 2 / 2
100.0 %
- 13 / 13
- 100.0 %
- 4 / 4
+ 1 / 1
+ -
+ 0 / 0
- RuleAddressSetInternal.sol
+ AccessControlModuleStandalone.sol
100.0 %
- 18 / 18
+ 7 / 7
100.0 %
- 6 / 6
+ 2 / 2
100.0 %
4 / 4
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html b/doc/coverage/coverage/src/modules/index-sort-f.html
similarity index 81%
rename from doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html
rename to doc/coverage/coverage/src/modules/index-sort-f.html
index a7bd900..73f9fb0 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-f.html
+++ b/doc/coverage/coverage/src/modules/index-sort-f.html
@@ -4,7 +4,7 @@
- LCOV - lcov.info - abstract/RuleAddressSet
+ LCOV - lcov.info - src/modules
@@ -19,7 +19,7 @@
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,8 +49,8 @@
-
-
+
+
@@ -82,26 +82,26 @@
Branches
- RuleAddressSetInternal.sol
+ VersionModule.sol
100.0 %
- 18 / 18
+ 2 / 2
100.0 %
- 6 / 6
- 100.0 %
- 4 / 4
+ 1 / 1
+ -
+ 0 / 0
- RuleAddressSet.sol
+ AccessControlModuleStandalone.sol
100.0 %
- 34 / 34
+ 7 / 7
100.0 %
- 13 / 13
+ 2 / 2
100.0 %
4 / 4
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html b/doc/coverage/coverage/src/modules/index-sort-l.html
similarity index 81%
rename from doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html
rename to doc/coverage/coverage/src/modules/index-sort-l.html
index 5a6b041..9a0c19c 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/index-sort-l.html
+++ b/doc/coverage/coverage/src/modules/index-sort-l.html
@@ -4,7 +4,7 @@
- LCOV - lcov.info - abstract/RuleAddressSet
+ LCOV - lcov.info - src/modules
@@ -19,7 +19,7 @@
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,8 +49,8 @@
-
-
+
+
@@ -82,26 +82,26 @@
Branches
- RuleAddressSetInternal.sol
+ VersionModule.sol
100.0 %
- 18 / 18
+ 2 / 2
100.0 %
- 6 / 6
- 100.0 %
- 4 / 4
+ 1 / 1
+ -
+ 0 / 0
- RuleAddressSet.sol
+ AccessControlModuleStandalone.sol
100.0 %
- 34 / 34
+ 7 / 7
100.0 %
- 13 / 13
+ 2 / 2
100.0 %
4 / 4
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/index.html b/doc/coverage/coverage/src/modules/index.html
similarity index 81%
rename from doc/coverage/coverage/abstract/RuleAddressSet/index.html
rename to doc/coverage/coverage/src/modules/index.html
index c9aa742..73f8778 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/index.html
+++ b/doc/coverage/coverage/src/modules/index.html
@@ -4,7 +4,7 @@
- LCOV - lcov.info - abstract/RuleAddressSet
+ LCOV - lcov.info - src/modules
@@ -19,7 +19,7 @@
diff --git a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html
new file mode 100644
index 0000000..a847612
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func-sort-c.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLight.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func.html
new file mode 100644
index 0000000..c28dd62
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.func.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLight.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html
similarity index 64%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html
rename to doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html
index 9320c13..34c83af 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLight.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLight.sol
-
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLight.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
-
+
+
+
-
+
-
+
@@ -72,56 +72,58 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 5 : : import {IERC165} from "OZ/utils/introspection/IERC165.sol";
- 6 : : import {IRule} from "RuleEngine/interfaces/IRule.sol";
- 7 : : import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
- 8 : : import {AccessControlModuleStandalone} from "../../modules/AccessControlModuleStandalone.sol";
- 9 : : import {ERC3643ComplianceModule} from "RuleEngine/modules/ERC3643ComplianceModule.sol";
- 10 : : import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
- 11 : :
- 12 : : /**
- 13 : : * @title ConditionalTransferLight
- 14 : : * @dev Requires operator approval for each transfer. Same transfer (from, to, value)
- 15 : : * can be approved multiple times to allow repeated transfers.
- 16 : : */
- 17 : : contract RuleConditionalTransferLight is
- 18 : : AccessControlModuleStandalone,
- 19 : : ERC3643ComplianceModule,
- 20 : : RuleConditionalTransferLightBase
- 21 : : {
- 22 : : /**
- 23 : : * @param admin Address of the contract admin.
- 24 : : */
- 25 : : constructor(address admin) AccessControlModuleStandalone(admin) {}
- 26 : :
- 27 : 18 : function supportsInterface(bytes4 interfaceId)
- 28 : : public
- 29 : : view
- 30 : : virtual
- 31 : : override(AccessControlEnumerable, IERC165)
- 32 : : returns (bool)
- 33 : : {
- 34 : 18 : return interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID || interfaceId == type(IRule).interfaceId
- 35 : 11 : || AccessControlEnumerable.supportsInterface(interfaceId);
- 36 : : }
- 37 : :
- 38 : 1 : function created(address to, uint256 value) external onlyBoundToken {
- 39 : 1 : _transferred(address(0), to, value);
- 40 : : }
- 41 : :
- 42 : 1 : function destroyed(address from, uint256 value) external onlyBoundToken {
- 43 : 1 : _transferred(from, address(0), value);
- 44 : : }
- 45 : :
- 46 : 1848 : function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {}
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 5 : : import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+ 6 : : import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+ 7 : : import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+ 8 : : import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+ 9 : : import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
+ 10 : : import {IERC3643ComplianceFull} from "../../mocks/IERC3643ComplianceFull.sol";
+ 11 : : import {AccessControlModuleStandalone} from "../../modules/AccessControlModuleStandalone.sol";
+ 12 : : import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
+ 13 : :
+ 14 : : /**
+ 15 : : * @title ConditionalTransferLight
+ 16 : : * @dev Requires operator approval for each transfer. Same transfer (from, to, value)
+ 17 : : * can be approved multiple times to allow repeated transfers.
+ 18 : : */
+ 19 : : contract RuleConditionalTransferLight is AccessControlModuleStandalone, RuleConditionalTransferLightBase {
+ 20 : : /*//////////////////////////////////////////////////////////////
+ 21 : : CONSTRUCTOR
+ 22 : : //////////////////////////////////////////////////////////////*/
+ 23 : :
+ 24 : : /**
+ 25 : : * @param admin Address of the contract admin.
+ 26 : : */
+ 27 : : constructor(address admin) AccessControlModuleStandalone(admin) {}
+ 28 : :
+ 29 : : /*//////////////////////////////////////////////////////////////
+ 30 : : PUBLIC FUNCTIONS
+ 31 : : //////////////////////////////////////////////////////////////*/
+ 32 : :
+ 33 : 21 : function supportsInterface(bytes4 interfaceId)
+ 34 : : public
+ 35 : : view
+ 36 : : virtual
+ 37 : : override(AccessControlEnumerable, IERC165)
+ 38 : : returns (bool)
+ 39 : : {
+ 40 : 21 : return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ 41 : 20 : || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ 42 : 19 : || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ 43 : 13 : || interfaceId == type(IERC7551Compliance).interfaceId
+ 44 : 12 : || interfaceId == type(IERC3643ComplianceFull).interfaceId
+ 45 : 11 : || AccessControlEnumerable.supportsInterface(interfaceId);
+ 46 : : }
47 : :
- 48 : 770 : function _authorizeTransferExecution() internal view virtual override {
- 49 [ + + ]: 770 : require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()));
- 50 : : }
+ 48 : : /*//////////////////////////////////////////////////////////////
+ 49 : : ACCESS CONTROL
+ 50 : : //////////////////////////////////////////////////////////////*/
51 : :
- 52 : 19 : function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {}
- 53 : : }
+ 52 : 1924 : function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {}
+ 53 : :
+ 54 : 25 : function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {}
+ 55 : : }
@@ -129,7 +131,7 @@
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html
similarity index 62%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html
index 191f539..ae97ffa 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,13 +31,13 @@
-
-
+
+
-
+
@@ -53,38 +53,38 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html
similarity index 62%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html
index 12bc2cf..cc07253 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,13 +31,13 @@
-
-
+
+
-
+
@@ -53,38 +53,38 @@
-
+
-
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html
similarity index 51%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html
index b05073e..221d711 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,13 +31,13 @@
-
-
+
+
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,29 +72,48 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {IRule} from "RuleEngine/interfaces/IRule.sol";
- 7 : : import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
- 8 : : import {IERC165} from "OZ/utils/introspection/IERC165.sol";
- 9 : : import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
- 10 : :
- 11 : : /**
- 12 : : * @title RuleConditionalTransferLightOwnable2Step
- 13 : : * @notice Ownable2Step variant of RuleConditionalTransferLight.
- 14 : : */
- 15 : : contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step {
- 16 : : constructor(address owner) Ownable(owner) {}
- 17 : :
- 18 : 4 : function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
- 19 : 4 : return interfaceId == type(IERC165).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
- 20 : 2 : || interfaceId == type(IRule).interfaceId;
- 21 : : }
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+ 7 : : import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+ 8 : : import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+ 9 : : import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+ 10 : : import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
+ 11 : : import {IERC3643ComplianceFull} from "../../mocks/IERC3643ComplianceFull.sol";
+ 12 : : import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
+ 13 : :
+ 14 : : /**
+ 15 : : * @title RuleConditionalTransferLightOwnable2Step
+ 16 : : * @notice Ownable2Step variant of RuleConditionalTransferLight.
+ 17 : : */
+ 18 : : contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step {
+ 19 : : /*//////////////////////////////////////////////////////////////
+ 20 : : CONSTRUCTOR
+ 21 : : //////////////////////////////////////////////////////////////*/
22 : :
- 23 : 4 : function _authorizeTransferApproval() internal view virtual override onlyOwner {}
+ 23 : : constructor(address owner) Ownable(owner) {}
24 : :
- 25 : 3 : function _authorizeTransferExecution() internal view virtual override onlyOwner {}
- 26 : : }
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : PUBLIC FUNCTIONS
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : :
+ 29 : 7 : function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
+ 30 : 7 : return interfaceId == type(IERC165).interfaceId
+ 31 : 6 : || interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ 32 : 5 : || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ 33 : 4 : || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ 34 : 3 : || interfaceId == type(IERC7551Compliance).interfaceId
+ 35 : 2 : || interfaceId == type(IERC3643ComplianceFull).interfaceId;
+ 36 : : }
+ 37 : :
+ 38 : : /*//////////////////////////////////////////////////////////////
+ 39 : : ACCESS CONTROL
+ 40 : : //////////////////////////////////////////////////////////////*/
+ 41 : :
+ 42 : 4 : function _authorizeTransferApproval() internal view virtual override onlyOwner {}
+ 43 : :
+ 44 : 3 : function _onlyComplianceManager() internal virtual override onlyOwner {}
+ 45 : : }
@@ -102,7 +121,7 @@
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func-sort-c.html
new file mode 100644
index 0000000..58e7df6
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func-sort-c.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func.html
new file mode 100644
index 0000000..eed496c
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.func.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.gcov.html
new file mode 100644
index 0000000..2388ee3
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol.gcov.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Branch data Line data Source code
+
+ 1 : : // SPDX-License-Identifier: MPL-2.0
+ 2 : : pragma solidity ^0.8.20;
+ 3 : :
+ 4 : : import {ITransferContext} from "../../interfaces/ITransferContext.sol";
+ 5 : : import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol";
+ 6 : :
+ 7 : : /**
+ 8 : : * @title RuleConditionalTransferLightApprovalBase
+ 9 : : * @dev Pure approval state machine: stores and consumes per-transfer approvals.
+ 10 : : * No knowledge of token binding or compliance interfaces.
+ 11 : : */
+ 12 : : abstract contract RuleConditionalTransferLightApprovalBase is RuleConditionalTransferLightInvariantStorage {
+ 13 : : // Mapping from transfer hash to approval count
+ 14 : : mapping(bytes32 => uint256) public approvalCounts;
+ 15 : :
+ 16 : : /*//////////////////////////////////////////////////////////////
+ 17 : : ACCESS CONTROL
+ 18 : : //////////////////////////////////////////////////////////////*/
+ 19 : :
+ 20 : 4 : modifier onlyTransferApprover() {
+ 21 : 4 : _authorizeTransferApproval();
+ 22 : : _;
+ 23 : : }
+ 24 : :
+ 25 : 3 : modifier onlyTransferExecutor() {
+ 26 : 3 : _authorizeTransferExecution();
+ 27 : : _;
+ 28 : : }
+ 29 : :
+ 30 : 0 : function _authorizeTransferApproval() internal view virtual;
+ 31 : :
+ 32 : 0 : function _authorizeTransferExecution() internal view virtual;
+ 33 : :
+ 34 : : /*//////////////////////////////////////////////////////////////
+ 35 : : EXTERNAL FUNCTIONS
+ 36 : : //////////////////////////////////////////////////////////////*/
+ 37 : :
+ 38 : 3 : function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor {
+ 39 : 3 : _transferredFromContext(ctx);
+ 40 : : }
+ 41 : :
+ 42 : : /*//////////////////////////////////////////////////////////////
+ 43 : : PUBLIC FUNCTIONS
+ 44 : : //////////////////////////////////////////////////////////////*/
+ 45 : :
+ 46 : 1917 : function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover {
+ 47 : 1918 : bytes32 transferHash = _transferHash(from, to, value);
+ 48 : 1918 : approvalCounts[transferHash] += 1;
+ 49 : 1918 : emit TransferApproved(from, to, value, approvalCounts[transferHash]);
+ 50 : : }
+ 51 : :
+ 52 : 4 : function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover {
+ 53 : 3 : bytes32 transferHash = _transferHash(from, to, value);
+ 54 : 3 : uint256 count = approvalCounts[transferHash];
+ 55 [ + + ]: 3 : require(count != 0, TransferApprovalNotFound());
+ 56 : 2 : approvalCounts[transferHash] = count - 1;
+ 57 : 2 : emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]);
+ 58 : : }
+ 59 : :
+ 60 : 263 : function approvedCount(address from, address to, uint256 value) public view returns (uint256) {
+ 61 : 263 : bytes32 transferHash = _transferHash(from, to, value);
+ 62 : 263 : return approvalCounts[transferHash];
+ 63 : : }
+ 64 : :
+ 65 : : /*//////////////////////////////////////////////////////////////
+ 66 : : INTERNAL FUNCTIONS
+ 67 : : //////////////////////////////////////////////////////////////*/
+ 68 : :
+ 69 : 3 : function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual {
+ 70 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
+ 71 : : }
+ 72 : :
+ 73 : 850 : function _transferred(address from, address to, uint256 value) internal virtual {
+ 74 [ + ]: 850 : if (from == address(0) || to == address(0)) {
+ 75 : 850 : return;
+ 76 : : }
+ 77 : 846 : bytes32 transferHash = _transferHash(from, to, value);
+ 78 : 846 : uint256 count = approvalCounts[transferHash];
+ 79 : :
+ 80 [ + + ]: 846 : require(count != 0, TransferNotApproved());
+ 81 : :
+ 82 : 843 : approvalCounts[transferHash] = count - 1;
+ 83 : 843 : emit TransferExecuted(from, to, value, approvalCounts[transferHash]);
+ 84 : : }
+ 85 : :
+ 86 : 3039 : function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) {
+ 87 : : // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead.
+ 88 : : assembly ("memory-safe") {
+ 89 : 3039 : let ptr := mload(0x40)
+ 90 : 3039 : mstore(ptr, shl(96, from))
+ 91 : 3039 : mstore(add(ptr, 0x20), shl(96, to))
+ 92 : 3039 : mstore(add(ptr, 0x40), value)
+ 93 : 3039 : hash := keccak256(ptr, 0x60)
+ 94 : : }
+ 95 : : }
+ 96 : : }
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html
new file mode 100644
index 0000000..bfc1a7f
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func-sort-c.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html
new file mode 100644
index 0000000..3893954
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.func.html
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightBase.sol - functions
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html
similarity index 60%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html
index e80e06d..2084755 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
-
+ LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
+
+
-
+
-
+
@@ -77,204 +77,174 @@
6 : : import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
7 : : import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
8 : : import {IRule} from "RuleEngine/interfaces/IRule.sol";
- 9 : : import {ITransferContext} from "../../interfaces/ITransferContext.sol";
- 10 : : import {IERC20} from "OZ/token/ERC20/IERC20.sol";
- 11 : : import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol";
- 12 : : import {VersionModule} from "../../../modules/VersionModule.sol";
- 13 : :
- 14 : : /**
- 15 : : * @title RuleConditionalTransferLightBase
- 16 : : * @dev Requires operator approval for each transfer. Same transfer (from, to, value)
- 17 : : * can be approved multiple times to allow repeated transfers.
- 18 : : */
- 19 : : abstract contract RuleConditionalTransferLightBase is
- 20 : : VersionModule,
- 21 : : RuleConditionalTransferLightInvariantStorage,
- 22 : : IRule
- 23 : : {
- 24 : : // Mapping from transfer hash to approval count
- 25 : : mapping(bytes32 => uint256) public approvalCounts;
- 26 : :
- 27 : 1841 : function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover {
- 28 : 1842 : bytes32 transferHash = _transferHash(from, to, value);
- 29 : 1842 : approvalCounts[transferHash] += 1;
- 30 : 1842 : emit TransferApproved(from, to, value, approvalCounts[transferHash]);
- 31 : : }
- 32 : :
- 33 : 4 : function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover {
- 34 : 3 : bytes32 transferHash = _transferHash(from, to, value);
- 35 : 3 : uint256 count = approvalCounts[transferHash];
- 36 [ + + ]: 3 : require(count != 0, TransferApprovalNotFound());
- 37 : 2 : approvalCounts[transferHash] = count - 1;
- 38 : 2 : emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]);
- 39 : : }
- 40 : :
- 41 : : /**
- 42 : : * @notice Approves and performs a transferFrom using this rule as spender.
- 43 : : * @dev Requires `from` to have approved this contract on the token.
- 44 : : * @dev This function is only safe for tokens that call back `transferred()` during transfer.
- 45 : : * @dev CEI is intentionally inverted so the approval exists for the callback.
- 46 : : */
- 47 : 4 : function approveAndTransferIfAllowed(address token, address from, address to, uint256 value)
- 48 : : public
- 49 : : onlyTransferApprover
- 50 : : returns (bool)
- 51 : : {
- 52 [ + + ]: 4 : require(token != address(0), RuleConditionalTransferLight_TokenAddressZeroNotAllowed());
- 53 : :
- 54 : 3 : approveTransfer(from, to, value);
+ 9 : : import {ERC3643ComplianceModule} from "RuleEngine/modules/ERC3643ComplianceModule.sol";
+ 10 : : import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+ 11 : : import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+ 12 : : import {RuleConditionalTransferLightApprovalBase} from "./RuleConditionalTransferLightApprovalBase.sol";
+ 13 : : import {VersionModule} from "../../../modules/VersionModule.sol";
+ 14 : :
+ 15 : : /**
+ 16 : : * @title RuleConditionalTransferLightBase
+ 17 : : * @dev Wires the approval state machine into the ERC-3643 / ERC-1404 / IRule compliance
+ 18 : : * interface layer and enforces single-token binding.
+ 19 : : */
+ 20 : : abstract contract RuleConditionalTransferLightBase is
+ 21 : : VersionModule,
+ 22 : : ERC3643ComplianceModule,
+ 23 : : RuleConditionalTransferLightApprovalBase,
+ 24 : : IRule
+ 25 : : {
+ 26 : : using SafeERC20 for IERC20;
+ 27 : :
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : EXTERNAL FUNCTIONS
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : 1 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
+ 33 : 1 : return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED;
+ 34 : : }
+ 35 : :
+ 36 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
+ 37 : : external
+ 38 : : pure
+ 39 : : override(IERC1404)
+ 40 : : returns (string memory)
+ 41 : : {
+ 42 [ + ]: 2 : if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) {
+ 43 : 1 : return TEXT_TRANSFER_REQUEST_NOT_APPROVED;
+ 44 : : }
+ 45 : 1 : return TEXT_CODE_NOT_FOUND;
+ 46 : : }
+ 47 : :
+ 48 : 1 : function created(address to, uint256 value) external onlyBoundToken {
+ 49 : 1 : _transferred(address(0), to, value);
+ 50 : : }
+ 51 : :
+ 52 : 1 : function destroyed(address from, uint256 value) external onlyBoundToken {
+ 53 : 1 : _transferred(from, address(0), value);
+ 54 : : }
55 : :
- 56 : 3 : uint256 allowed = IERC20(token).allowance(from, address(this));
- 57 [ + + ]: 3 : require(allowed >= value, RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value));
- 58 : :
- 59 : 2 : bool success = IERC20(token).transferFrom(from, to, value);
- 60 [ + + ]: 2 : require(success, RuleConditionalTransferLight_TransferFailed());
- 61 : 1 : return true;
- 62 : : }
- 63 : :
- 64 : 263 : function approvedCount(address from, address to, uint256 value) public view returns (uint256) {
- 65 : 263 : bytes32 transferHash = _transferHash(from, to, value);
- 66 : 263 : return approvalCounts[transferHash];
- 67 : : }
- 68 : :
- 69 : 769 : function transferred(address from, address to, uint256 value)
- 70 : : public
- 71 : : override(IERC3643IComplianceContract)
- 72 : : onlyTransferExecutor
- 73 : : {
- 74 : 767 : _transferred(from, to, value);
- 75 : : }
- 76 : :
- 77 : 1 : function transferred(
- 78 : : address,
- 79 : : /* spender */
- 80 : : address from,
- 81 : : address to,
- 82 : : uint256 value
- 83 : : )
+ 56 : : /*//////////////////////////////////////////////////////////////
+ 57 : : PUBLIC FUNCTIONS
+ 58 : : //////////////////////////////////////////////////////////////*/
+ 59 : :
+ 60 : : /**
+ 61 : : * @notice Approves and performs a transferFrom using this rule as spender.
+ 62 : : * @dev Requires `from` to have approved this contract on the token.
+ 63 : : * @dev This function is only safe for tokens that call back `transferred()` during transfer.
+ 64 : : * @dev CEI is intentionally inverted so the approval exists for the callback.
+ 65 : : */
+ 66 : 4 : function approveAndTransferIfAllowed(address from, address to, uint256 value)
+ 67 : : public
+ 68 : : onlyTransferApprover
+ 69 : : returns (bool)
+ 70 : : {
+ 71 : 4 : address token = getTokenBound();
+ 72 [ + + ]: 4 : require(token != address(0), RuleConditionalTransferLight_TokenNotBound());
+ 73 : :
+ 74 : 3 : approveTransfer(from, to, value);
+ 75 : :
+ 76 : 3 : uint256 allowed = IERC20(token).allowance(from, address(this));
+ 77 [ + + ]: 3 : require(allowed >= value, RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value));
+ 78 : :
+ 79 : 2 : IERC20(token).safeTransferFrom(from, to, value);
+ 80 : 1 : return true;
+ 81 : : }
+ 82 : :
+ 83 : 846 : function transferred(address from, address to, uint256 value)
84 : : public
- 85 : : override(IRuleEngine)
+ 85 : : override(IERC3643IComplianceContract)
86 : : onlyTransferExecutor
87 : : {
- 88 : 1 : _transferred(from, to, value);
+ 88 : 844 : _transferred(from, to, value);
89 : : }
90 : :
- 91 : 7 : function detectTransferRestriction(address from, address to, uint256 value)
- 92 : : public
- 93 : : view
- 94 : : override(IERC1404)
- 95 : : returns (uint8)
- 96 : : {
- 97 [ + ]: 13 : if (from == address(0) || to == address(0)) {
- 98 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 99 : : }
- 100 : 9 : bytes32 transferHash = _transferHash(from, to, value);
- 101 [ + ]: 9 : if (approvalCounts[transferHash] == 0) {
- 102 : 6 : return CODE_TRANSFER_REQUEST_NOT_APPROVED;
- 103 : : }
- 104 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 105 : : }
- 106 : :
- 107 : 1 : function detectTransferRestrictionFrom(
- 108 : : address,
- 109 : : /* spender */
- 110 : : address from,
- 111 : : address to,
- 112 : : uint256 value
- 113 : : )
- 114 : : public
- 115 : : view
- 116 : : override(IERC1404Extend)
- 117 : : returns (uint8)
- 118 : : {
- 119 : 2 : return detectTransferRestriction(from, to, value);
- 120 : : }
- 121 : :
- 122 : 4 : function canTransfer(address from, address to, uint256 value)
- 123 : : public
- 124 : : view
- 125 : : override(IERC3643ComplianceRead)
- 126 : : returns (bool)
- 127 : : {
- 128 : 4 : return detectTransferRestriction(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 129 : : }
- 130 : :
- 131 : 1 : function canTransferFrom(address spender, address from, address to, uint256 value)
- 132 : : public
- 133 : : view
- 134 : : override(IERC7551Compliance)
- 135 : : returns (bool)
- 136 : : {
- 137 : 1 : return detectTransferRestrictionFrom(spender, from, to, value)
- 138 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 139 : : }
- 140 : :
- 141 : 1 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
- 142 : 1 : return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED;
- 143 : : }
- 144 : :
- 145 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
- 146 : : external
- 147 : : pure
- 148 : : override(IERC1404)
- 149 : : returns (string memory)
- 150 : : {
- 151 [ + ]: 2 : if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) {
- 152 : 1 : return TEXT_TRANSFER_REQUEST_NOT_APPROVED;
- 153 : : }
- 154 : 1 : return TEXT_CODE_NOT_FOUND;
- 155 : : }
- 156 : :
- 157 : 3 : function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor {
- 158 : 3 : _transferredFromContext(ctx);
- 159 : : }
- 160 : :
- 161 : 3 : function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual {
- 162 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
- 163 : : }
- 164 : :
- 165 : 773 : function _transferred(address from, address to, uint256 value) internal virtual {
- 166 [ + ]: 773 : if (from == address(0) || to == address(0)) {
- 167 : 773 : return;
- 168 : : }
- 169 : 768 : bytes32 transferHash = _transferHash(from, to, value);
- 170 : 768 : uint256 count = approvalCounts[transferHash];
- 171 : :
- 172 [ + + ]: 768 : require(count != 0, TransferNotApproved());
- 173 : :
- 174 : 765 : approvalCounts[transferHash] = count - 1;
- 175 : 765 : emit TransferExecuted(from, to, value, approvalCounts[transferHash]);
- 176 : : }
- 177 : :
- 178 : 2885 : function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) {
- 179 : : // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead.
- 180 : : assembly ("memory-safe") {
- 181 : 2885 : let ptr := mload(0x40)
- 182 : 2885 : mstore(ptr, shl(96, from))
- 183 : 2885 : mstore(add(ptr, 0x20), shl(96, to))
- 184 : 2885 : mstore(add(ptr, 0x40), value)
- 185 : 2885 : hash := keccak256(ptr, 0x60)
- 186 : : }
- 187 : : }
- 188 : :
- 189 : : /*//////////////////////////////////////////////////////////////
- 190 : : ACCESS CONTROL
- 191 : : //////////////////////////////////////////////////////////////*/
- 192 : :
- 193 : 4 : modifier onlyTransferApprover() {
- 194 : 4 : _authorizeTransferApproval();
- 195 : : _;
- 196 : : }
- 197 : :
- 198 : 3 : modifier onlyTransferExecutor() {
- 199 : 3 : _authorizeTransferExecution();
- 200 : : _;
- 201 : : }
- 202 : :
- 203 : : function _authorizeTransferApproval() internal view virtual;
- 204 : :
- 205 : : function _authorizeTransferExecution() internal view virtual;
- 206 : : }
+ 91 : 1 : function transferred(
+ 92 : : address,
+ 93 : : /* spender */
+ 94 : : address from,
+ 95 : : address to,
+ 96 : : uint256 value
+ 97 : : )
+ 98 : : public
+ 99 : : override(IRuleEngine)
+ 100 : : onlyTransferExecutor
+ 101 : : {
+ 102 : 1 : _transferred(from, to, value);
+ 103 : : }
+ 104 : :
+ 105 : : /**
+ 106 : : * @notice Binds a token to this rule. Reverts if a token is already bound.
+ 107 : : * @dev Enforces single-token binding to prevent cross-token approval replay.
+ 108 : : * To migrate to a new token, call `unbindToken` first.
+ 109 : : * @dev WARNING: `unbindToken` does not clear `approvalCounts`. Stale approvals
+ 110 : : * from the previous token remain in storage and can be consumed after rebinding.
+ 111 : : * The operator who controls rebinding also controls approvals, so the trust
+ 112 : : * model is preserved, but integrators should be aware of this behavior.
+ 113 : : */
+ 114 : 27 : function bindToken(address token) public override onlyComplianceManager {
+ 115 [ + + ]: 26 : require(getTokenBound() == address(0), RuleConditionalTransferLight_TokenAlreadyBound());
+ 116 : 25 : _bindToken(token);
+ 117 : : }
+ 118 : :
+ 119 : 7 : function detectTransferRestriction(address from, address to, uint256 value)
+ 120 : : public
+ 121 : : view
+ 122 : : override(IERC1404)
+ 123 : : returns (uint8)
+ 124 : : {
+ 125 [ + ]: 13 : if (from == address(0) || to == address(0)) {
+ 126 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 127 : : }
+ 128 : 9 : bytes32 transferHash = _transferHash(from, to, value);
+ 129 [ + ]: 9 : if (approvalCounts[transferHash] == 0) {
+ 130 : 6 : return CODE_TRANSFER_REQUEST_NOT_APPROVED;
+ 131 : : }
+ 132 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 133 : : }
+ 134 : :
+ 135 : 1 : function detectTransferRestrictionFrom(
+ 136 : : address,
+ 137 : : /* spender */
+ 138 : : address from,
+ 139 : : address to,
+ 140 : : uint256 value
+ 141 : : )
+ 142 : : public
+ 143 : : view
+ 144 : : override(IERC1404Extend)
+ 145 : : returns (uint8)
+ 146 : : {
+ 147 : 2 : return detectTransferRestriction(from, to, value);
+ 148 : : }
+ 149 : :
+ 150 : 4 : function canTransfer(address from, address to, uint256 value)
+ 151 : : public
+ 152 : : view
+ 153 : : override(IERC3643ComplianceRead)
+ 154 : : returns (bool)
+ 155 : : {
+ 156 : 4 : return detectTransferRestriction(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 157 : : }
+ 158 : :
+ 159 : 1 : function canTransferFrom(address spender, address from, address to, uint256 value)
+ 160 : : public
+ 161 : : view
+ 162 : : override(IERC7551Compliance)
+ 163 : : returns (bool)
+ 164 : : {
+ 165 : 1 : return detectTransferRestrictionFrom(spender, from, to, value)
+ 166 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 167 : : }
+ 168 : :
+ 169 : : /*//////////////////////////////////////////////////////////////
+ 170 : : ACCESS CONTROL
+ 171 : : //////////////////////////////////////////////////////////////*/
+ 172 : :
+ 173 : 850 : function _authorizeTransferExecution() internal view override {
+ 174 [ + + ]: 850 : require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()));
+ 175 : : }
+ 176 : : }
@@ -282,7 +252,7 @@
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html
new file mode 100644
index 0000000..b4ec123
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html
new file mode 100644
index 0000000..4c7f0d8
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html
new file mode 100644
index 0000000..68c0a99
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index.html b/doc/coverage/coverage/src/rules/operation/abstract/index.html
new file mode 100644
index 0000000..3cdfea7
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/operation/abstract/index.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/operation/abstract
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html b/doc/coverage/coverage/src/rules/operation/index-sort-b.html
similarity index 58%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html
rename to doc/coverage/coverage/src/rules/operation/index-sort-b.html
index 156b486..a9a2930 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-b.html
+++ b/doc/coverage/coverage/src/rules/operation/index-sort-b.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation
-
+ LCOV - lcov.info - src/rules/operation
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
-
+
+
+
-
+
-
+
@@ -76,41 +76,41 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
- RuleConditionalTransferLightOwnable2Step.sol
+ RuleConditionalTransferLight.sol
-
+
100.0 %
- 5 / 5
+ 9 / 9
100.0 %
3 / 3
-
0 / 0
- RuleConditionalTransferLight.sol
+ RuleConditionalTransferLightOwnable2Step.sol
-
+
100.0 %
- 11 / 11
+ 9 / 9
100.0 %
- 6 / 6
- 100.0 %
- 2 / 2
+ 3 / 3
+ -
+ 0 / 0
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html b/doc/coverage/coverage/src/rules/operation/index-sort-f.html
similarity index 58%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html
rename to doc/coverage/coverage/src/rules/operation/index-sort-f.html
index eae3f77..b5619fb 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-f.html
+++ b/doc/coverage/coverage/src/rules/operation/index-sort-f.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation
-
+ LCOV - lcov.info - src/rules/operation
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
-
+
+
+
-
+
-
+
@@ -76,41 +76,41 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
- RuleConditionalTransferLightOwnable2Step.sol
+ RuleConditionalTransferLight.sol
-
+
100.0 %
- 5 / 5
+ 9 / 9
100.0 %
3 / 3
-
0 / 0
- RuleConditionalTransferLight.sol
+ RuleConditionalTransferLightOwnable2Step.sol
-
+
100.0 %
- 11 / 11
+ 9 / 9
100.0 %
- 6 / 6
- 100.0 %
- 2 / 2
+ 3 / 3
+ -
+ 0 / 0
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html b/doc/coverage/coverage/src/rules/operation/index-sort-l.html
similarity index 58%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html
rename to doc/coverage/coverage/src/rules/operation/index-sort-l.html
index ec44c2c..55cbbfe 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index-sort-l.html
+++ b/doc/coverage/coverage/src/rules/operation/index-sort-l.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation
-
+ LCOV - lcov.info - src/rules/operation
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
-
+
+
+
-
+
-
+
@@ -76,41 +76,41 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
- RuleConditionalTransferLightOwnable2Step.sol
+ RuleConditionalTransferLight.sol
-
+
100.0 %
- 5 / 5
+ 9 / 9
100.0 %
3 / 3
-
0 / 0
- RuleConditionalTransferLight.sol
+ RuleConditionalTransferLightOwnable2Step.sol
-
+
100.0 %
- 11 / 11
+ 9 / 9
100.0 %
- 6 / 6
- 100.0 %
- 2 / 2
+ 3 / 3
+ -
+ 0 / 0
diff --git a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html b/doc/coverage/coverage/src/rules/operation/index.html
similarity index 58%
rename from doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html
rename to doc/coverage/coverage/src/rules/operation/index.html
index a2a41cf..43751bf 100644
--- a/doc/coverage/coverage/home/ryan/Pictures/dev/Rules/src/rules/operation/index.html
+++ b/doc/coverage/coverage/src/rules/operation/index.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - ../../../src/rules/operation
-
+ LCOV - lcov.info - src/rules/operation
+
LCOV - code coverage report
-
+
-
+
@@ -31,17 +31,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -49,16 +49,16 @@
-
-
-
+
+
+
-
+
-
+
@@ -76,30 +76,30 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleConditionalTransferLight.sol
-
+
100.0 %
- 11 / 11
- 100.0 %
- 6 / 6
+ 9 / 9
100.0 %
- 2 / 2
+ 3 / 3
+ -
+ 0 / 0
RuleConditionalTransferLightOwnable2Step.sol
-
+
100.0 %
- 5 / 5
+ 9 / 9
100.0 %
3 / 3
-
@@ -110,7 +110,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html
similarity index 58%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html
index 42a7372..b023fd5 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSet.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,78 +53,86 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func.html
similarity index 58%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func.html
index 1d8147e..3d6ae02 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSet.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,78 +53,86 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html
similarity index 86%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html
index dbff4e5..496a79c 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSet.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -95,148 +95,144 @@
24 : : IAddressList
25 : : {
26 : : /*//////////////////////////////////////////////////////////////
- 27 : : STATE
+ 27 : : CONSTRUCTOR
28 : : //////////////////////////////////////////////////////////////*/
29 : :
- 30 : : /*//////////////////////////////////////////////////////////////
- 31 : : CONSTRUCTOR
- 32 : : //////////////////////////////////////////////////////////////*/
- 33 : :
- 34 : : /**
- 35 : : * @notice Initializes the RuleAddressSet contract.
- 36 : : * @param forwarderIrrevocable Address of the ERC2771 forwarder (for meta-transactions).
- 37 : : */
- 38 : : constructor(address forwarderIrrevocable) MetaTxModuleStandalone(forwarderIrrevocable) {}
+ 30 : : /**
+ 31 : : * @notice Initializes the RuleAddressSet contract.
+ 32 : : * @param forwarderIrrevocable Address of the ERC2771 forwarder (for meta-transactions).
+ 33 : : */
+ 34 : : constructor(address forwarderIrrevocable) MetaTxModuleStandalone(forwarderIrrevocable) {}
+ 35 : :
+ 36 : : /*//////////////////////////////////////////////////////////////
+ 37 : : ACCESS CONTROL
+ 38 : : //////////////////////////////////////////////////////////////*/
39 : :
- 40 : : /*//////////////////////////////////////////////////////////////
- 41 : : CORE LOGIC
- 42 : : //////////////////////////////////////////////////////////////*/
- 43 : :
- 44 : : /**
- 45 : : * @notice Adds multiple addresses to the set.
- 46 : : * @dev
- 47 : : * - Does not revert if an address is already listed.
- 48 : : * - Accessible only by accounts with the `ADDRESS_LIST_ADD_ROLE`.
- 49 : : * @param targetAddresses Array of addresses to be added.
- 50 : : */
- 51 : 275 : function addAddresses(address[] calldata targetAddresses) public onlyAddressListAdd {
- 52 : 274 : _addAddresses(targetAddresses);
- 53 : 274 : emit AddAddresses(targetAddresses);
- 54 : : }
- 55 : :
- 56 : : /**
- 57 : : * @notice Removes multiple addresses from the set.
- 58 : : * @dev
- 59 : : * - Does not revert if an address is not listed.
- 60 : : * - Accessible only by accounts with the `ADDRESS_LIST_REMOVE_ROLE`.
- 61 : : * @param targetAddresses Array of addresses to remove.
- 62 : : */
- 63 : 260 : function removeAddresses(address[] calldata targetAddresses) public onlyAddressListRemove {
- 64 : 259 : _removeAddresses(targetAddresses);
- 65 : 259 : emit RemoveAddresses(targetAddresses);
- 66 : : }
- 67 : :
- 68 : : /**
- 69 : : * @notice Adds a single address to the set.
- 70 : : * @dev
- 71 : : * - Reverts if the address is already listed.
- 72 : : * - Accessible only by accounts with the `ADDRESS_LIST_ADD_ROLE`.
- 73 : : * @param targetAddress The address to be added.
- 74 : : */
- 75 : 117 : function addAddress(address targetAddress) public onlyAddressListAdd {
- 76 [ + + ]: 112 : require(!_isAddressListed(targetAddress), RuleAddressSet_AddressAlreadyListed());
- 77 : 111 : _addAddress(targetAddress);
- 78 : 111 : emit AddAddress(targetAddress);
- 79 : : }
- 80 : :
- 81 : : /**
- 82 : : * @notice Removes a single address from the set.
- 83 : : * @dev
- 84 : : * - Reverts if the address is not listed.
- 85 : : * - Accessible only by accounts with the `ADDRESS_LIST_REMOVE_ROLE`.
- 86 : : * @param targetAddress The address to be removed.
- 87 : : */
- 88 : 12 : function removeAddress(address targetAddress) public onlyAddressListRemove {
- 89 [ + + ]: 7 : require(_isAddressListed(targetAddress), RuleAddressSet_AddressNotFound());
- 90 : 6 : _removeAddress(targetAddress);
- 91 : 6 : emit RemoveAddress(targetAddress);
- 92 : : }
- 93 : :
- 94 : : /*//////////////////////////////////////////////////////////////
- 95 : : ACCESS CONTROL
- 96 : : //////////////////////////////////////////////////////////////*/
- 97 : :
- 98 : 275 : modifier onlyAddressListAdd() {
- 99 : 275 : _authorizeAddressListAdd();
- 100 : : _;
- 101 : : }
- 102 : :
- 103 : 12 : modifier onlyAddressListRemove() {
- 104 : 12 : _authorizeAddressListRemove();
- 105 : : _;
+ 40 : 275 : modifier onlyAddressListAdd() {
+ 41 : 275 : _authorizeAddressListAdd();
+ 42 : : _;
+ 43 : : }
+ 44 : :
+ 45 : 12 : modifier onlyAddressListRemove() {
+ 46 : 12 : _authorizeAddressListRemove();
+ 47 : : _;
+ 48 : : }
+ 49 : :
+ 50 : 0 : function _authorizeAddressListAdd() internal view virtual;
+ 51 : :
+ 52 : 0 : function _authorizeAddressListRemove() internal view virtual;
+ 53 : :
+ 54 : : /*//////////////////////////////////////////////////////////////
+ 55 : : PUBLIC FUNCTIONS
+ 56 : : //////////////////////////////////////////////////////////////*/
+ 57 : :
+ 58 : : /**
+ 59 : : * @notice Adds multiple addresses to the set.
+ 60 : : * @dev
+ 61 : : * - Does not revert if an address is already listed.
+ 62 : : * - Accessible only by accounts with the `ADDRESS_LIST_ADD_ROLE`.
+ 63 : : * @param targetAddresses Array of addresses to be added.
+ 64 : : */
+ 65 : 275 : function addAddresses(address[] calldata targetAddresses) public onlyAddressListAdd {
+ 66 : 274 : _addAddresses(targetAddresses);
+ 67 : 274 : emit AddAddresses(targetAddresses);
+ 68 : : }
+ 69 : :
+ 70 : : /**
+ 71 : : * @notice Removes multiple addresses from the set.
+ 72 : : * @dev
+ 73 : : * - Does not revert if an address is not listed.
+ 74 : : * - Accessible only by accounts with the `ADDRESS_LIST_REMOVE_ROLE`.
+ 75 : : * @param targetAddresses Array of addresses to remove.
+ 76 : : */
+ 77 : 260 : function removeAddresses(address[] calldata targetAddresses) public onlyAddressListRemove {
+ 78 : 259 : _removeAddresses(targetAddresses);
+ 79 : 259 : emit RemoveAddresses(targetAddresses);
+ 80 : : }
+ 81 : :
+ 82 : : /**
+ 83 : : * @notice Adds a single address to the set.
+ 84 : : * @dev
+ 85 : : * - Reverts if the address is already listed.
+ 86 : : * - Accessible only by accounts with the `ADDRESS_LIST_ADD_ROLE`.
+ 87 : : * @param targetAddress The address to be added.
+ 88 : : */
+ 89 : 117 : function addAddress(address targetAddress) public onlyAddressListAdd {
+ 90 [ + + ]: 112 : require(!_isAddressListed(targetAddress), RuleAddressSet_AddressAlreadyListed());
+ 91 : 111 : _addAddress(targetAddress);
+ 92 : 111 : emit AddAddress(targetAddress);
+ 93 : : }
+ 94 : :
+ 95 : : /**
+ 96 : : * @notice Removes a single address from the set.
+ 97 : : * @dev
+ 98 : : * - Reverts if the address is not listed.
+ 99 : : * - Accessible only by accounts with the `ADDRESS_LIST_REMOVE_ROLE`.
+ 100 : : * @param targetAddress The address to be removed.
+ 101 : : */
+ 102 : 12 : function removeAddress(address targetAddress) public onlyAddressListRemove {
+ 103 [ + + ]: 7 : require(_isAddressListed(targetAddress), RuleAddressSet_AddressNotFound());
+ 104 : 6 : _removeAddress(targetAddress);
+ 105 : 6 : emit RemoveAddress(targetAddress);
106 : : }
107 : :
- 108 : : function _authorizeAddressListAdd() internal view virtual;
- 109 : :
- 110 : : function _authorizeAddressListRemove() internal view virtual;
- 111 : :
- 112 : : /**
- 113 : : * @notice Returns the total number of currently listed addresses.
- 114 : : * @return count The number of listed addresses.
- 115 : : */
- 116 : 536 : function listedAddressCount() public view returns (uint256 count) {
- 117 : 536 : count = _listedAddressCount();
- 118 : : }
- 119 : :
- 120 : : /**
- 121 : : * @notice Checks whether a specific address is currently listed.
- 122 : : * @param targetAddress The address to check.
- 123 : : * @return isListed True if listed, false otherwise.
- 124 : : */
- 125 : 2 : function contains(address targetAddress) public view override(IIdentityRegistryContains) returns (bool isListed) {
- 126 : 2 : isListed = _isAddressListed(targetAddress);
- 127 : : }
- 128 : :
- 129 : : /**
- 130 : : * @notice Checks whether a specific address is currently listed.
- 131 : : * @param targetAddress The address to check.
- 132 : : * @return isListed True if listed, false otherwise.
- 133 : : */
- 134 : 71 : function isAddressListed(address targetAddress) public view returns (bool isListed) {
- 135 : 391 : isListed = _isAddressListed(targetAddress);
- 136 : : }
- 137 : :
- 138 : : /**
- 139 : : * @notice Checks multiple addresses in a single call.
- 140 : : * @param targetAddresses Array of addresses to check.
- 141 : : * @return results Array of booleans corresponding to listing status.
- 142 : : */
- 143 : 108 : function areAddressesListed(address[] memory targetAddresses) public view returns (bool[] memory results) {
- 144 : 108 : results = new bool[](targetAddresses.length);
- 145 : 108 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
- 146 : 244 : results[i] = _isAddressListed(targetAddresses[i]);
- 147 : : }
- 148 : : }
+ 108 : : /**
+ 109 : : * @notice Returns the total number of currently listed addresses.
+ 110 : : * @return count The number of listed addresses.
+ 111 : : */
+ 112 : 536 : function listedAddressCount() public view returns (uint256 count) {
+ 113 : 536 : count = _listedAddressCount();
+ 114 : : }
+ 115 : :
+ 116 : : /**
+ 117 : : * @notice Checks whether a specific address is currently listed.
+ 118 : : * @param targetAddress The address to check.
+ 119 : : * @return isListed True if listed, false otherwise.
+ 120 : : */
+ 121 : 2 : function contains(address targetAddress) public view override(IIdentityRegistryContains) returns (bool isListed) {
+ 122 : 2 : isListed = _isAddressListed(targetAddress);
+ 123 : : }
+ 124 : :
+ 125 : : /**
+ 126 : : * @notice Checks whether a specific address is currently listed.
+ 127 : : * @param targetAddress The address to check.
+ 128 : : * @return isListed True if listed, false otherwise.
+ 129 : : */
+ 130 : 73 : function isAddressListed(address targetAddress) public view returns (bool isListed) {
+ 131 : 393 : isListed = _isAddressListed(targetAddress);
+ 132 : : }
+ 133 : :
+ 134 : : /**
+ 135 : : * @notice Checks multiple addresses in a single call.
+ 136 : : * @param targetAddresses Array of addresses to check.
+ 137 : : * @return results Array of booleans corresponding to listing status.
+ 138 : : */
+ 139 : 108 : function areAddressesListed(address[] memory targetAddresses) public view returns (bool[] memory results) {
+ 140 : 108 : results = new bool[](targetAddresses.length);
+ 141 : 108 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
+ 142 : 244 : results[i] = _isAddressListed(targetAddresses[i]);
+ 143 : : }
+ 144 : : }
+ 145 : :
+ 146 : : /*//////////////////////////////////////////////////////////////
+ 147 : : INTERNAL FUNCTIONS
+ 148 : : //////////////////////////////////////////////////////////////*/
149 : :
- 150 : : /*//////////////////////////////////////////////////////////////
- 151 : : ERC-2771 META TX
- 152 : : //////////////////////////////////////////////////////////////*/
- 153 : :
- 154 : : /// @inheritdoc ERC2771Context
- 155 : 929 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
- 156 : 929 : return ERC2771Context._msgSender();
- 157 : : }
- 158 : :
- 159 : : /// @inheritdoc ERC2771Context
- 160 : 6 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
- 161 : 6 : return ERC2771Context._msgData();
- 162 : : }
- 163 : :
- 164 : : /// @inheritdoc ERC2771Context
- 165 : 937 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
- 166 : 937 : return ERC2771Context._contextSuffixLength();
- 167 : : }
- 168 : : }
+ 150 : : /// @inheritdoc ERC2771Context
+ 151 : 931 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
+ 152 : 931 : return ERC2771Context._msgSender();
+ 153 : : }
+ 154 : :
+ 155 : : /// @inheritdoc ERC2771Context
+ 156 : 6 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
+ 157 : 6 : return ERC2771Context._msgData();
+ 158 : : }
+ 159 : :
+ 160 : : /// @inheritdoc ERC2771Context
+ 161 : 939 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
+ 162 : 939 : return ERC2771Context._contextSuffixLength();
+ 163 : : }
+ 164 : : }
@@ -244,7 +240,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html
similarity index 72%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html
index 01dc2e5..05dd139 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSetInternal.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,20 +53,20 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html
similarity index 72%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html
index b7986b8..e95d122 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSetInternal.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,24 +53,24 @@
-
+
-
+
- Function Name
- Hit count
+ Function Name
+ Hit count
RuleAddressSetInternal._addAddress
- 111
+ 113
RuleAddressSetInternal._addAddresses
@@ -78,7 +78,7 @@
RuleAddressSetInternal._isAddressListed
- 771
+ 773
RuleAddressSetInternal._listedAddressCount
@@ -96,7 +96,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html
similarity index 91%
rename from doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html
index 463505a..520fea8 100644
--- a/doc/coverage/coverage/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleAddressSet/RuleAddressSetInternal.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -73,7 +73,7 @@
2 : : pragma solidity ^0.8.20;
3 : :
4 : : /* ==== OpenZeppelin === */
- 5 : : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
+ 5 : : import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6 : :
7 : : /**
8 : : * @title Rule Address Set (Internal)
@@ -94,7 +94,7 @@
23 : : EnumerableSet.AddressSet private _listedAddresses;
24 : :
25 : : /*//////////////////////////////////////////////////////////////
- 26 : : INTERNAL
+ 26 : : INTERNAL FUNCTIONS
27 : : //////////////////////////////////////////////////////////////*/
28 : :
29 : : /**
@@ -142,8 +142,8 @@
71 : : * @notice Adds a single address to the set.
72 : : * @param targetAddress The address to add.
73 : : */
- 74 : 111 : function _addAddress(address targetAddress) internal virtual {
- 75 : 111 : _listedAddresses.add(targetAddress);
+ 74 : 113 : function _addAddress(address targetAddress) internal virtual {
+ 75 : 113 : _listedAddresses.add(targetAddress);
76 : : }
77 : :
78 : : /**
@@ -167,8 +167,8 @@
96 : : * @param targetAddress The address to check.
97 : : * @return isListed True if the address is listed, false otherwise.
98 : : */
- 99 : 771 : function _isAddressListed(address targetAddress) internal view virtual returns (bool isListed) {
- 100 : 771 : isListed = _listedAddresses.contains(targetAddress);
+ 99 : 773 : function _isAddressListed(address targetAddress) internal view virtual returns (bool isListed) {
+ 100 : 773 : isListed = _listedAddresses.contains(targetAddress);
101 : : }
102 : : }
@@ -178,7 +178,7 @@
diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-b.html
new file mode 100644
index 0000000..b7b5003
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-b.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filename
+ Line Coverage
+ Functions
+ Branches
+
+
+ RuleAddressSet.sol
+
+
+
+ 94.4 %
+ 34 / 36
+ 86.7 %
+ 13 / 15
+ 100.0 %
+ 4 / 4
+
+
+ RuleAddressSetInternal.sol
+
+
+
+ 100.0 %
+ 18 / 18
+ 100.0 %
+ 6 / 6
+ 100.0 %
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-f.html
new file mode 100644
index 0000000..0ec1d22
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-f.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filename
+ Line Coverage
+ Functions
+ Branches
+
+
+ RuleAddressSet.sol
+
+
+
+ 94.4 %
+ 34 / 36
+ 86.7 %
+ 13 / 15
+ 100.0 %
+ 4 / 4
+
+
+ RuleAddressSetInternal.sol
+
+
+
+ 100.0 %
+ 18 / 18
+ 100.0 %
+ 6 / 6
+ 100.0 %
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-l.html
new file mode 100644
index 0000000..254ba12
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index-sort-l.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filename
+ Line Coverage
+ Functions
+ Branches
+
+
+ RuleAddressSet.sol
+
+
+
+ 94.4 %
+ 34 / 36
+ 86.7 %
+ 13 / 15
+ 100.0 %
+ 4 / 4
+
+
+ RuleAddressSetInternal.sol
+
+
+
+ 100.0 %
+ 18 / 18
+ 100.0 %
+ 6 / 6
+ 100.0 %
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index.html
new file mode 100644
index 0000000..2abdb78
--- /dev/null
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressSet/index.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+ LCOV - lcov.info - src/rules/validation/abstract/RuleAddressSet
+
+
+
+
+
+
+ LCOV - code coverage report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Filename
+ Line Coverage
+ Functions
+ Branches
+
+
+ RuleAddressSet.sol
+
+
+
+ 94.4 %
+ 34 / 36
+ 86.7 %
+ 13 / 15
+ 100.0 %
+ 4 / 4
+
+
+ RuleAddressSetInternal.sol
+
+
+
+ 100.0 %
+ 18 / 18
+ 100.0 %
+ 6 / 6
+ 100.0 %
+ 4 / 4
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html
similarity index 77%
rename from doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html
index 51af6ae..47d2037 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980/RuleERC2980Internal.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,20 +53,20 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html
similarity index 77%
rename from doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html
index eb4b210..64acba5 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980/RuleERC2980Internal.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,20 +53,20 @@
-
+
-
+
- Function Name
- Hit count
+ Function Name
+ Hit count
RuleERC2980Internal._addFrozenlistAddress
@@ -78,7 +78,7 @@
RuleERC2980Internal._addWhitelistAddress
- 39
+ 43
RuleERC2980Internal._addWhitelistAddresses
@@ -90,11 +90,11 @@
RuleERC2980Internal._isFrozen
- 90
+ 94
RuleERC2980Internal._isWhitelisted
- 82
+ 89
RuleERC2980Internal._removeFrozenlistAddress
@@ -120,7 +120,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html
similarity index 92%
rename from doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html
index 753927f..fae617a 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980/RuleERC2980Internal.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -73,7 +73,7 @@
2 : : pragma solidity ^0.8.20;
3 : :
4 : : /* ==== OpenZeppelin === */
- 5 : : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
+ 5 : : import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6 : :
7 : : /**
8 : : * @title RuleERC2980Internal
@@ -127,16 +127,16 @@
56 : : }
57 : : }
58 : :
- 59 : 39 : function _addWhitelistAddress(address targetAddress) internal virtual {
- 60 : 39 : _whitelist.add(targetAddress);
+ 59 : 43 : function _addWhitelistAddress(address targetAddress) internal virtual {
+ 60 : 43 : _whitelist.add(targetAddress);
61 : : }
62 : :
63 : 4 : function _removeWhitelistAddress(address targetAddress) internal virtual {
64 : 4 : _whitelist.remove(targetAddress);
65 : : }
66 : :
- 67 : 82 : function _isWhitelisted(address targetAddress) internal view virtual returns (bool) {
- 68 : 82 : return _whitelist.contains(targetAddress);
+ 67 : 89 : function _isWhitelisted(address targetAddress) internal view virtual returns (bool) {
+ 68 : 89 : return _whitelist.contains(targetAddress);
69 : : }
70 : :
71 : 5 : function _whitelistCount() internal view virtual returns (uint256) {
@@ -181,8 +181,8 @@
110 : 4 : _frozenlist.remove(targetAddress);
111 : : }
112 : :
- 113 : 90 : function _isFrozen(address targetAddress) internal view virtual returns (bool) {
- 114 : 90 : return _frozenlist.contains(targetAddress);
+ 113 : 94 : function _isFrozen(address targetAddress) internal view virtual returns (bool) {
+ 114 : 94 : return _frozenlist.contains(targetAddress);
115 : : }
116 : :
117 : 4 : function _frozenlistCount() internal view virtual returns (uint256) {
@@ -196,7 +196,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-b.html
similarity index 67%
rename from doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-b.html
index 3a5069c..443cd34 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-b.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-b.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleERC2980Internal.sol
-
+
100.0 %
36 / 36
@@ -98,7 +98,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-f.html
similarity index 67%
rename from doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-f.html
index cc487f0..8da3e22 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-f.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-f.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleERC2980Internal.sol
-
+
100.0 %
36 / 36
@@ -98,7 +98,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-l.html
similarity index 67%
rename from doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-l.html
index fa2906b..fcb03d9 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/index-sort-l.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index-sort-l.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleERC2980Internal.sol
-
+
100.0 %
36 / 36
@@ -98,7 +98,7 @@
diff --git a/doc/coverage/coverage/abstract/RuleERC2980/index.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index.html
similarity index 67%
rename from doc/coverage/coverage/abstract/RuleERC2980/index.html
rename to doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index.html
index b9213df..26b1739 100644
--- a/doc/coverage/coverage/abstract/RuleERC2980/index.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/RuleERC2980/index.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/RuleERC2980
-
+ LCOV - lcov.info - src/rules/validation/abstract/RuleERC2980
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleERC2980Internal.sol
-
+
100.0 %
36 / 36
@@ -98,7 +98,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func-sort-c.html
index dbf2453..3623044 100644
--- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleBlacklistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleBlacklistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,62 +53,62 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func.html
index bae16a3..dddeb1b 100644
--- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleBlacklistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleBlacklistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,62 +53,62 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.gcov.html
similarity index 76%
rename from doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.gcov.html
index 1bc30a8..9df608c 100644
--- a/doc/coverage/coverage/abstract/base/RuleBlacklistBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleBlacklistBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleBlacklistBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleBlacklistBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -86,113 +86,125 @@
15 : : * @notice Core blacklist logic without access-control policy.
16 : : */
17 : : abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlacklistInvariantStorage {
- 18 : : constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
- 19 : :
- 20 : 106 : function _detectTransferRestriction(
- 21 : : address from,
- 22 : : address to,
- 23 : : uint256 /* value */
- 24 : : )
- 25 : : internal
- 26 : : view
- 27 : : override
- 28 : : returns (uint8)
- 29 : : {
- 30 [ + + ]: 106 : if (isAddressListed(from)) {
- 31 : 23 : return CODE_ADDRESS_FROM_IS_BLACKLISTED;
- 32 [ + ]: 83 : } else if (isAddressListed(to)) {
- 33 : 19 : return CODE_ADDRESS_TO_IS_BLACKLISTED;
- 34 : : }
- 35 : 64 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 36 : : }
- 37 : :
- 38 : 22 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 39 : : internal
- 40 : : view
- 41 : : override
- 42 : : returns (uint8)
- 43 : : {
- 44 [ + ]: 22 : if (isAddressListed(spender)) {
- 45 : 8 : return CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
- 46 : : }
- 47 : 14 : return _detectTransferRestriction(from, to, value);
- 48 : : }
- 49 : :
- 50 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode)
- 51 : : public
- 52 : : pure
- 53 : : virtual
- 54 : : override(IRule)
- 55 : : returns (bool)
- 56 : : {
- 57 : 4 : return restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED || restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED
- 58 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
- 59 : : }
- 60 : :
- 61 : 12 : function messageForTransferRestriction(uint8 restrictionCode)
- 62 : : public
- 63 : : pure
- 64 : : virtual
- 65 : : override(IERC1404)
- 66 : : returns (string memory)
- 67 : : {
- 68 [ + + ]: 12 : if (restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) {
- 69 : 5 : return TEXT_ADDRESS_FROM_IS_BLACKLISTED;
- 70 [ + + ]: 7 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) {
- 71 : 3 : return TEXT_ADDRESS_TO_IS_BLACKLISTED;
- 72 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED) {
- 73 : 1 : return TEXT_ADDRESS_SPENDER_IS_BLACKLISTED;
- 74 : : } else {
- 75 : 3 : return TEXT_CODE_NOT_FOUND;
- 76 : : }
- 77 : : }
- 78 : :
- 79 : 61 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
- 80 : 61 : return RuleTransferValidation.supportsInterface(interfaceId);
+ 18 : : /*//////////////////////////////////////////////////////////////
+ 19 : : CONSTRUCTOR
+ 20 : : //////////////////////////////////////////////////////////////*/
+ 21 : :
+ 22 : : constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
+ 23 : :
+ 24 : : /*//////////////////////////////////////////////////////////////
+ 25 : : PUBLIC FUNCTIONS
+ 26 : : //////////////////////////////////////////////////////////////*/
+ 27 : :
+ 28 : : /**
+ 29 : : * @inheritdoc IERC3643IComplianceContract
+ 30 : : * @dev Validation only; does not modify state.
+ 31 : : */
+ 32 : 58 : function transferred(address from, address to, uint256 value)
+ 33 : : public
+ 34 : : view
+ 35 : : virtual
+ 36 : : override(IERC3643IComplianceContract)
+ 37 : : {
+ 38 : 58 : _transferred(from, to, value);
+ 39 : : }
+ 40 : :
+ 41 : : /**
+ 42 : : * @inheritdoc IRuleEngine
+ 43 : : * @dev Validation only; does not modify state.
+ 44 : : */
+ 45 : 2 : function transferred(address spender, address from, address to, uint256 value)
+ 46 : : public
+ 47 : : view
+ 48 : : virtual
+ 49 : : override(IRuleEngine)
+ 50 : : {
+ 51 : 2 : _transferredFrom(spender, from, to, value);
+ 52 : : }
+ 53 : :
+ 54 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode)
+ 55 : : public
+ 56 : : pure
+ 57 : : virtual
+ 58 : : override(IRule)
+ 59 : : returns (bool)
+ 60 : : {
+ 61 : 4 : return restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED || restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED
+ 62 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
+ 63 : : }
+ 64 : :
+ 65 : 12 : function messageForTransferRestriction(uint8 restrictionCode)
+ 66 : : public
+ 67 : : pure
+ 68 : : virtual
+ 69 : : override(IERC1404)
+ 70 : : returns (string memory)
+ 71 : : {
+ 72 [ + + ]: 12 : if (restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) {
+ 73 : 5 : return TEXT_ADDRESS_FROM_IS_BLACKLISTED;
+ 74 [ + + ]: 7 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) {
+ 75 : 3 : return TEXT_ADDRESS_TO_IS_BLACKLISTED;
+ 76 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED) {
+ 77 : 1 : return TEXT_ADDRESS_SPENDER_IS_BLACKLISTED;
+ 78 : : } else {
+ 79 : 3 : return TEXT_CODE_NOT_FOUND;
+ 80 : : }
81 : : }
82 : :
- 83 : : /**
- 84 : : * @inheritdoc IERC3643IComplianceContract
- 85 : : * @dev Validation only; does not modify state.
- 86 : : */
- 87 : 58 : function transferred(address from, address to, uint256 value)
- 88 : : public
- 89 : : view
- 90 : : virtual
- 91 : : override(IERC3643IComplianceContract)
- 92 : : {
- 93 : 58 : _transferred(from, to, value);
- 94 : : }
- 95 : :
- 96 : : /**
- 97 : : * @inheritdoc IRuleEngine
- 98 : : * @dev Validation only; does not modify state.
- 99 : : */
- 100 : 2 : function transferred(address spender, address from, address to, uint256 value)
- 101 : : public
- 102 : : view
- 103 : : virtual
- 104 : : override(IRuleEngine)
- 105 : : {
- 106 : 2 : _transferredFrom(spender, from, to, value);
+ 83 : 61 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
+ 84 : 61 : return RuleTransferValidation.supportsInterface(interfaceId);
+ 85 : : }
+ 86 : :
+ 87 : : /*//////////////////////////////////////////////////////////////
+ 88 : : INTERNAL FUNCTIONS
+ 89 : : //////////////////////////////////////////////////////////////*/
+ 90 : :
+ 91 : 106 : function _detectTransferRestriction(
+ 92 : : address from,
+ 93 : : address to,
+ 94 : : uint256 /* value */
+ 95 : : )
+ 96 : : internal
+ 97 : : view
+ 98 : : override
+ 99 : : returns (uint8)
+ 100 : : {
+ 101 [ + + ]: 106 : if (isAddressListed(from)) {
+ 102 : 23 : return CODE_ADDRESS_FROM_IS_BLACKLISTED;
+ 103 [ + ]: 83 : } else if (isAddressListed(to)) {
+ 104 : 19 : return CODE_ADDRESS_TO_IS_BLACKLISTED;
+ 105 : : }
+ 106 : 64 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
107 : : }
108 : :
- 109 : 61 : function _transferred(address from, address to, uint256 value) internal view virtual override {
- 110 : 61 : uint8 code = _detectTransferRestriction(from, to, value);
- 111 [ + + ]: 61 : require(
- 112 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
- 113 : : RuleBlacklist_InvalidTransfer(address(this), from, to, value, code)
- 114 : : );
- 115 : : }
- 116 : :
- 117 : 4 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 118 : 4 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 119 [ + + ]: 4 : require(
- 120 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
- 121 : : RuleBlacklist_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 122 : : );
- 123 : : }
- 124 : : }
+ 109 : 22 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 110 : : internal
+ 111 : : view
+ 112 : : override
+ 113 : : returns (uint8)
+ 114 : : {
+ 115 [ + ]: 22 : if (isAddressListed(spender)) {
+ 116 : 8 : return CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
+ 117 : : }
+ 118 : 14 : return _detectTransferRestriction(from, to, value);
+ 119 : : }
+ 120 : :
+ 121 : 61 : function _transferred(address from, address to, uint256 value) internal view virtual override {
+ 122 : 61 : uint8 code = _detectTransferRestriction(from, to, value);
+ 123 [ + + ]: 61 : require(
+ 124 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
+ 125 : : RuleBlacklist_InvalidTransfer(address(this), from, to, value, code)
+ 126 : : );
+ 127 : : }
+ 128 : :
+ 129 : 4 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 130 : 4 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 131 [ + + ]: 4 : require(
+ 132 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
+ 133 : : RuleBlacklist_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 134 : : );
+ 135 : : }
+ 136 : : }
@@ -200,7 +212,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func-sort-c.html
similarity index 56%
rename from doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func-sort-c.html
index 8da2363..bd5584f 100644
--- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleERC2980Base.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleERC2980Base.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,180 +31,200 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func.html
similarity index 56%
rename from doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func.html
index 0d085a0..6c2afc9 100644
--- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleERC2980Base.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleERC2980Base.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,180 +31,200 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.gcov.html
similarity index 80%
rename from doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.gcov.html
index 62c8d68..be5ba36 100644
--- a/doc/coverage/coverage/abstract/base/RuleERC2980Base.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleERC2980Base.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleERC2980Base.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleERC2980Base.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
@@ -109,346 +109,339 @@
38 : : CONSTRUCTOR
39 : : //////////////////////////////////////////////////////////////*/
40 : :
- 41 : : constructor(address forwarderIrrevocable) MetaTxModuleStandalone(forwarderIrrevocable) {}
- 42 : :
- 43 : : /*//////////////////////////////////////////////////////////////
- 44 : : TRANSFER RESTRICTION LOGIC
- 45 : : //////////////////////////////////////////////////////////////*/
- 46 : :
- 47 : 22 : function _detectTransferRestriction(
- 48 : : address from,
- 49 : : address to,
- 50 : : uint256 /* value */
- 51 : : )
- 52 : : internal
- 53 : : view
- 54 : : virtual
- 55 : : override
- 56 : : returns (uint8)
- 57 : : {
- 58 : : // Frozenlist check has priority
- 59 [ + + ]: 22 : if (_isFrozen(from)) {
- 60 : 4 : return CODE_ADDRESS_FROM_IS_FROZEN;
- 61 [ + ]: 18 : } else if (_isFrozen(to)) {
- 62 : 4 : return CODE_ADDRESS_TO_IS_FROZEN;
- 63 : : }
- 64 : : // Whitelist check: only the recipient must be whitelisted
- 65 [ + ]: 14 : if (!_isWhitelisted(to)) {
- 66 : 4 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
- 67 : : }
- 68 : 10 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 69 : : }
- 70 : :
- 71 : 8 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 72 : : internal
- 73 : : view
- 74 : : virtual
- 75 : : override
- 76 : : returns (uint8)
- 77 : : {
- 78 [ + ]: 8 : if (_isFrozen(spender)) {
- 79 : 4 : return CODE_ADDRESS_SPENDER_IS_FROZEN;
- 80 : : }
- 81 : 4 : return _detectTransferRestriction(from, to, value);
- 82 : : }
- 83 : :
- 84 : : /*//////////////////////////////////////////////////////////////
- 85 : : ERC-3643 / IRuleEngine HOOKS
- 86 : : //////////////////////////////////////////////////////////////*/
- 87 : :
- 88 : 4 : function transferred(address from, address to, uint256 value)
- 89 : : public
- 90 : : view
- 91 : : virtual
- 92 : : override(IERC3643IComplianceContract)
- 93 : : {
- 94 : 4 : _transferred(from, to, value);
- 95 : : }
- 96 : :
- 97 : 2 : function transferred(address spender, address from, address to, uint256 value)
- 98 : : public
- 99 : : view
- 100 : : virtual
- 101 : : override(IRuleEngine)
- 102 : : {
- 103 : 2 : _transferredFrom(spender, from, to, value);
- 104 : : }
- 105 : :
- 106 : 5 : function _transferred(address from, address to, uint256 value) internal view virtual override {
- 107 : 5 : uint8 code = _detectTransferRestriction(from, to, value);
- 108 [ + + ]: 5 : require(
- 109 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 110 : : RuleERC2980_InvalidTransfer(address(this), from, to, value, code)
- 111 : : );
- 112 : : }
- 113 : :
- 114 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 115 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 116 [ + + ]: 3 : require(
- 117 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 118 : : RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 119 : : );
- 120 : : }
- 121 : :
- 122 : : /*//////////////////////////////////////////////////////////////
- 123 : : RESTRICTION CODE HELPERS
- 124 : : //////////////////////////////////////////////////////////////*/
- 125 : :
- 126 : 5 : function canReturnTransferRestrictionCode(uint8 restrictionCode)
- 127 : : public
- 128 : : pure
- 129 : : virtual
- 130 : : override(IRule)
- 131 : : returns (bool)
- 132 : : {
- 133 : 5 : return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN
- 134 : 3 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED;
- 135 : : }
- 136 : :
- 137 : 5 : function messageForTransferRestriction(uint8 restrictionCode)
- 138 : : public
- 139 : : pure
- 140 : : virtual
- 141 : : override(IERC1404)
- 142 : : returns (string memory)
- 143 : : {
- 144 [ + + ]: 5 : if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) {
- 145 : 1 : return TEXT_ADDRESS_FROM_IS_FROZEN;
- 146 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) {
- 147 : 1 : return TEXT_ADDRESS_TO_IS_FROZEN;
- 148 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) {
- 149 : 1 : return TEXT_ADDRESS_SPENDER_IS_FROZEN;
- 150 [ + + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
- 151 : 1 : return TEXT_ADDRESS_TO_NOT_WHITELISTED;
- 152 : : } else {
- 153 : 1 : return TEXT_CODE_NOT_FOUND;
- 154 : : }
- 155 : : }
- 156 : :
- 157 : : /*//////////////////////////////////////////////////////////////
- 158 : : WHITELIST MANAGEMENT
- 159 : : //////////////////////////////////////////////////////////////*/
- 160 : :
- 161 : : /**
- 162 : : * @notice Adds multiple addresses to the whitelist.
- 163 : : * @dev Does not revert if an address is already listed.
- 164 : : */
- 165 : 6 : function addWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistAdd {
- 166 : 4 : _addWhitelistAddresses(targetAddresses);
- 167 : 4 : emit AddWhitelistAddresses(targetAddresses);
- 168 : : }
- 169 : :
- 170 : : /**
- 171 : : * @notice Removes multiple addresses from the whitelist.
- 172 : : * @dev Does not revert if an address is not listed.
- 173 : : */
- 174 : 4 : function removeWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistRemove {
- 175 : 3 : _removeWhitelistAddresses(targetAddresses);
- 176 : 3 : emit RemoveWhitelistAddresses(targetAddresses);
- 177 : : }
- 178 : :
- 179 : : /**
- 180 : : * @notice Adds a single address to the whitelist.
- 181 : : * @dev
- 182 : : * Reverts if the address is already listed.
- 183 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `addAddressToWhitelist`
- 184 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase
- 185 : : * convention of reverting on invalid single-item operations.
- 186 : : */
- 187 : 43 : function addWhitelistAddress(address targetAddress) public onlyWhitelistAdd {
- 188 [ + + ]: 40 : require(!_isWhitelisted(targetAddress), RuleERC2980_AddressAlreadyListed());
- 189 : 39 : _addWhitelistAddress(targetAddress);
- 190 : 39 : emit AddWhitelistAddress(targetAddress);
- 191 : : }
- 192 : :
- 193 : : /**
- 194 : : * @notice Removes a single address from the whitelist.
- 195 : : * @dev
- 196 : : * Reverts if the address is not listed.
- 197 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `removeAddressFromWhitelist`
- 198 : : * returns `false` when not found instead of reverting. This implementation follows the codebase
- 199 : : * convention of reverting on invalid single-item operations.
- 200 : : */
- 201 : 7 : function removeWhitelistAddress(address targetAddress) public onlyWhitelistRemove {
- 202 [ + + ]: 5 : require(_isWhitelisted(targetAddress), RuleERC2980_AddressNotFound());
- 203 : 4 : _removeWhitelistAddress(targetAddress);
- 204 : 4 : emit RemoveWhitelistAddress(targetAddress);
- 205 : : }
- 206 : :
- 207 : : /**
- 208 : : * @notice Returns the number of whitelisted addresses.
- 209 : : */
- 210 : 5 : function whitelistAddressCount() public view returns (uint256) {
- 211 : 5 : return _whitelistCount();
- 212 : : }
- 213 : :
- 214 : : /**
- 215 : : * @notice Returns true if the address is in the whitelist.
- 216 : : */
- 217 : 13 : function isWhitelisted(address targetAddress) public view returns (bool) {
- 218 : 13 : return _isWhitelisted(targetAddress);
- 219 : : }
- 220 : :
- 221 : : /**
- 222 : : * @notice ERC-2980 getter: returns true if the address is whitelisted.
- 223 : : */
- 224 : 5 : function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) {
- 225 : 5 : return _isWhitelisted(_operator);
- 226 : : }
- 227 : :
- 228 : : /**
- 229 : : * @notice Returns true if the address is whitelisted (identity-verified).
- 230 : : * @dev Reflects whitelist membership only. Frozen status is intentionally excluded:
- 231 : : * freezing is a temporary enforcement action and does not revoke identity verification.
- 232 : : */
- 233 : 3 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
- 234 : 3 : return _isWhitelisted(targetAddress);
- 235 : : }
- 236 : :
- 237 : : /**
- 238 : : * @notice Checks multiple addresses for whitelist membership.
- 239 : : */
- 240 : 1 : function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) {
- 241 : 1 : results = new bool[](targetAddresses.length);
- 242 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
- 243 : 2 : results[i] = _isWhitelisted(targetAddresses[i]);
- 244 : : }
- 245 : : }
- 246 : :
- 247 : : /*//////////////////////////////////////////////////////////////
- 248 : : FROZENLIST MANAGEMENT
- 249 : : //////////////////////////////////////////////////////////////*/
- 250 : :
- 251 : : /**
- 252 : : * @notice Adds multiple addresses to the frozenlist.
- 253 : : * @dev Does not revert if an address is already listed.
- 254 : : */
- 255 : 6 : function addFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistAdd {
- 256 : 4 : _addFrozenlistAddresses(targetAddresses);
- 257 : 4 : emit AddFrozenlistAddresses(targetAddresses);
- 258 : : }
- 259 : :
- 260 : : /**
- 261 : : * @notice Removes multiple addresses from the frozenlist.
- 262 : : * @dev Does not revert if an address is not listed.
- 263 : : */
- 264 : 2 : function removeFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistRemove {
- 265 : 2 : _removeFrozenlistAddresses(targetAddresses);
- 266 : 2 : emit RemoveFrozenlistAddresses(targetAddresses);
- 267 : : }
- 268 : :
- 269 : : /**
- 270 : : * @notice Adds a single address to the frozenlist.
- 271 : : * @dev
- 272 : : * Reverts if the address is already listed.
- 273 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `addAddressToFrozenlist`
- 274 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase
- 275 : : * convention of reverting on invalid single-item operations.
+ 41 : 67 : constructor(address forwarderIrrevocable, bool allowBurn) MetaTxModuleStandalone(forwarderIrrevocable) {
+ 42 [ + ]: 2 : if (allowBurn) {
+ 43 : 2 : _addWhitelistAddress(address(0));
+ 44 : 2 : emit AddWhitelistAddress(address(0));
+ 45 : : }
+ 46 : : }
+ 47 : :
+ 48 : : /*//////////////////////////////////////////////////////////////
+ 49 : : ACCESS CONTROL
+ 50 : : //////////////////////////////////////////////////////////////*/
+ 51 : :
+ 52 : 6 : modifier onlyWhitelistAdd() {
+ 53 : 6 : _authorizeWhitelistAdd();
+ 54 : : _;
+ 55 : : }
+ 56 : :
+ 57 : 7 : modifier onlyWhitelistRemove() {
+ 58 : 7 : _authorizeWhitelistRemove();
+ 59 : : _;
+ 60 : : }
+ 61 : :
+ 62 : 6 : modifier onlyFrozenlistAdd() {
+ 63 : 6 : _authorizeFrozenlistAdd();
+ 64 : : _;
+ 65 : : }
+ 66 : :
+ 67 : 2 : modifier onlyFrozenlistRemove() {
+ 68 : 2 : _authorizeFrozenlistRemove();
+ 69 : : _;
+ 70 : : }
+ 71 : :
+ 72 : 0 : function _authorizeWhitelistAdd() internal view virtual;
+ 73 : 0 : function _authorizeWhitelistRemove() internal view virtual;
+ 74 : 0 : function _authorizeFrozenlistAdd() internal view virtual;
+ 75 : 0 : function _authorizeFrozenlistRemove() internal view virtual;
+ 76 : :
+ 77 : : /*//////////////////////////////////////////////////////////////
+ 78 : : WHITELIST MANAGEMENT
+ 79 : : //////////////////////////////////////////////////////////////*/
+ 80 : :
+ 81 : : /**
+ 82 : : * @notice Adds multiple addresses to the whitelist.
+ 83 : : * @dev Does not revert if an address is already listed.
+ 84 : : */
+ 85 : 6 : function addWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistAdd {
+ 86 : 4 : _addWhitelistAddresses(targetAddresses);
+ 87 : 4 : emit AddWhitelistAddresses(targetAddresses);
+ 88 : : }
+ 89 : :
+ 90 : : /**
+ 91 : : * @notice Removes multiple addresses from the whitelist.
+ 92 : : * @dev Does not revert if an address is not listed.
+ 93 : : */
+ 94 : 4 : function removeWhitelistAddresses(address[] calldata targetAddresses) public onlyWhitelistRemove {
+ 95 : 3 : _removeWhitelistAddresses(targetAddresses);
+ 96 : 3 : emit RemoveWhitelistAddresses(targetAddresses);
+ 97 : : }
+ 98 : :
+ 99 : : /**
+ 100 : : * @notice Adds a single address to the whitelist.
+ 101 : : * @dev
+ 102 : : * Reverts if the address is already listed.
+ 103 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `addAddressToWhitelist`
+ 104 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase
+ 105 : : * convention of reverting on invalid single-item operations.
+ 106 : : */
+ 107 : 45 : function addWhitelistAddress(address targetAddress) public onlyWhitelistAdd {
+ 108 [ + + ]: 42 : require(!_isWhitelisted(targetAddress), RuleERC2980_AddressAlreadyListed());
+ 109 : 41 : _addWhitelistAddress(targetAddress);
+ 110 : 41 : emit AddWhitelistAddress(targetAddress);
+ 111 : : }
+ 112 : :
+ 113 : : /**
+ 114 : : * @notice Removes a single address from the whitelist.
+ 115 : : * @dev
+ 116 : : * Reverts if the address is not listed.
+ 117 : : * Deviation from ERC-2980 `Whitelistable` example interface: the spec's `removeAddressFromWhitelist`
+ 118 : : * returns `false` when not found instead of reverting. This implementation follows the codebase
+ 119 : : * convention of reverting on invalid single-item operations.
+ 120 : : */
+ 121 : 7 : function removeWhitelistAddress(address targetAddress) public onlyWhitelistRemove {
+ 122 [ + + ]: 5 : require(_isWhitelisted(targetAddress), RuleERC2980_AddressNotFound());
+ 123 : 4 : _removeWhitelistAddress(targetAddress);
+ 124 : 4 : emit RemoveWhitelistAddress(targetAddress);
+ 125 : : }
+ 126 : :
+ 127 : : /*//////////////////////////////////////////////////////////////
+ 128 : : FROZENLIST MANAGEMENT
+ 129 : : //////////////////////////////////////////////////////////////*/
+ 130 : :
+ 131 : : /**
+ 132 : : * @notice Adds multiple addresses to the frozenlist.
+ 133 : : * @dev Does not revert if an address is already listed.
+ 134 : : */
+ 135 : 6 : function addFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistAdd {
+ 136 : 4 : _addFrozenlistAddresses(targetAddresses);
+ 137 : 4 : emit AddFrozenlistAddresses(targetAddresses);
+ 138 : : }
+ 139 : :
+ 140 : : /**
+ 141 : : * @notice Removes multiple addresses from the frozenlist.
+ 142 : : * @dev Does not revert if an address is not listed.
+ 143 : : */
+ 144 : 2 : function removeFrozenlistAddresses(address[] calldata targetAddresses) public onlyFrozenlistRemove {
+ 145 : 2 : _removeFrozenlistAddresses(targetAddresses);
+ 146 : 2 : emit RemoveFrozenlistAddresses(targetAddresses);
+ 147 : : }
+ 148 : :
+ 149 : : /**
+ 150 : : * @notice Adds a single address to the frozenlist.
+ 151 : : * @dev
+ 152 : : * Reverts if the address is already listed.
+ 153 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `addAddressToFrozenlist`
+ 154 : : * returns `false` on duplicates instead of reverting. This implementation follows the codebase
+ 155 : : * convention of reverting on invalid single-item operations.
+ 156 : : */
+ 157 : 22 : function addFrozenlistAddress(address targetAddress) public onlyFrozenlistAdd {
+ 158 [ + + ]: 19 : require(!_isFrozen(targetAddress), RuleERC2980_AddressAlreadyListed());
+ 159 : 18 : _addFrozenlistAddress(targetAddress);
+ 160 : 18 : emit AddFrozenlistAddress(targetAddress);
+ 161 : : }
+ 162 : :
+ 163 : : /**
+ 164 : : * @notice Removes a single address from the frozenlist.
+ 165 : : * @dev
+ 166 : : * Reverts if the address is not listed.
+ 167 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `removeAddressFromFrozenlist`
+ 168 : : * returns `false` when not found instead of reverting. This implementation follows the codebase
+ 169 : : * convention of reverting on invalid single-item operations.
+ 170 : : */
+ 171 : 7 : function removeFrozenlistAddress(address targetAddress) public onlyFrozenlistRemove {
+ 172 [ + + ]: 5 : require(_isFrozen(targetAddress), RuleERC2980_AddressNotFound());
+ 173 : 4 : _removeFrozenlistAddress(targetAddress);
+ 174 : 4 : emit RemoveFrozenlistAddress(targetAddress);
+ 175 : : }
+ 176 : :
+ 177 : : /*//////////////////////////////////////////////////////////////
+ 178 : : PUBLIC FUNCTIONS
+ 179 : : //////////////////////////////////////////////////////////////*/
+ 180 : :
+ 181 : 4 : function transferred(address from, address to, uint256 value)
+ 182 : : public
+ 183 : : view
+ 184 : : virtual
+ 185 : : override(IERC3643IComplianceContract)
+ 186 : : {
+ 187 : 4 : _transferred(from, to, value);
+ 188 : : }
+ 189 : :
+ 190 : 2 : function transferred(address spender, address from, address to, uint256 value)
+ 191 : : public
+ 192 : : view
+ 193 : : virtual
+ 194 : : override(IRuleEngine)
+ 195 : : {
+ 196 : 2 : _transferredFrom(spender, from, to, value);
+ 197 : : }
+ 198 : :
+ 199 : 5 : function canReturnTransferRestrictionCode(uint8 restrictionCode)
+ 200 : : public
+ 201 : : pure
+ 202 : : virtual
+ 203 : : override(IRule)
+ 204 : : returns (bool)
+ 205 : : {
+ 206 : 5 : return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN
+ 207 : 3 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED;
+ 208 : : }
+ 209 : :
+ 210 : 5 : function messageForTransferRestriction(uint8 restrictionCode)
+ 211 : : public
+ 212 : : pure
+ 213 : : virtual
+ 214 : : override(IERC1404)
+ 215 : : returns (string memory)
+ 216 : : {
+ 217 [ + + ]: 5 : if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) {
+ 218 : 1 : return TEXT_ADDRESS_FROM_IS_FROZEN;
+ 219 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) {
+ 220 : 1 : return TEXT_ADDRESS_TO_IS_FROZEN;
+ 221 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) {
+ 222 : 1 : return TEXT_ADDRESS_SPENDER_IS_FROZEN;
+ 223 [ + + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
+ 224 : 1 : return TEXT_ADDRESS_TO_NOT_WHITELISTED;
+ 225 : : } else {
+ 226 : 1 : return TEXT_CODE_NOT_FOUND;
+ 227 : : }
+ 228 : : }
+ 229 : :
+ 230 : 1 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
+ 231 : 1 : return RuleTransferValidation.supportsInterface(interfaceId);
+ 232 : : }
+ 233 : :
+ 234 : : /**
+ 235 : : * @notice Returns the number of whitelisted addresses.
+ 236 : : */
+ 237 : 5 : function whitelistAddressCount() public view returns (uint256) {
+ 238 : 5 : return _whitelistCount();
+ 239 : : }
+ 240 : :
+ 241 : : /**
+ 242 : : * @notice Returns true if the address is in the whitelist.
+ 243 : : */
+ 244 : 14 : function isWhitelisted(address targetAddress) public view returns (bool) {
+ 245 : 14 : return _isWhitelisted(targetAddress);
+ 246 : : }
+ 247 : :
+ 248 : : /**
+ 249 : : * @notice ERC-2980 getter: returns true if the address is whitelisted.
+ 250 : : */
+ 251 : 7 : function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) {
+ 252 : 7 : return _isWhitelisted(_operator);
+ 253 : : }
+ 254 : :
+ 255 : : /**
+ 256 : : * @notice Returns true if the address is whitelisted (identity-verified).
+ 257 : : * @dev Reflects whitelist membership only. Frozen status is intentionally excluded:
+ 258 : : * freezing is a temporary enforcement action and does not revoke identity verification.
+ 259 : : */
+ 260 : 3 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
+ 261 : 3 : return _isWhitelisted(targetAddress);
+ 262 : : }
+ 263 : :
+ 264 : : /**
+ 265 : : * @notice Checks multiple addresses for whitelist membership.
+ 266 : : */
+ 267 : 1 : function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) {
+ 268 : 1 : results = new bool[](targetAddresses.length);
+ 269 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
+ 270 : 2 : results[i] = _isWhitelisted(targetAddresses[i]);
+ 271 : : }
+ 272 : : }
+ 273 : :
+ 274 : : /**
+ 275 : : * @notice Returns the number of frozen addresses.
276 : : */
- 277 : 22 : function addFrozenlistAddress(address targetAddress) public onlyFrozenlistAdd {
- 278 [ + + ]: 19 : require(!_isFrozen(targetAddress), RuleERC2980_AddressAlreadyListed());
- 279 : 18 : _addFrozenlistAddress(targetAddress);
- 280 : 18 : emit AddFrozenlistAddress(targetAddress);
- 281 : : }
- 282 : :
- 283 : : /**
- 284 : : * @notice Removes a single address from the frozenlist.
- 285 : : * @dev
- 286 : : * Reverts if the address is not listed.
- 287 : : * Deviation from ERC-2980 `Freezable` example interface: the spec's `removeAddressFromFrozenlist`
- 288 : : * returns `false` when not found instead of reverting. This implementation follows the codebase
- 289 : : * convention of reverting on invalid single-item operations.
+ 277 : 4 : function frozenlistAddressCount() public view returns (uint256) {
+ 278 : 4 : return _frozenlistCount();
+ 279 : : }
+ 280 : :
+ 281 : : /**
+ 282 : : * @notice Returns true if the address is in the frozenlist.
+ 283 : : */
+ 284 : 12 : function isFrozen(address targetAddress) public view returns (bool) {
+ 285 : 12 : return _isFrozen(targetAddress);
+ 286 : : }
+ 287 : :
+ 288 : : /**
+ 289 : : * @notice ERC-2980 getter: returns true if the address is frozen.
290 : : */
- 291 : 7 : function removeFrozenlistAddress(address targetAddress) public onlyFrozenlistRemove {
- 292 [ + + ]: 5 : require(_isFrozen(targetAddress), RuleERC2980_AddressNotFound());
- 293 : 4 : _removeFrozenlistAddress(targetAddress);
- 294 : 4 : emit RemoveFrozenlistAddress(targetAddress);
- 295 : : }
- 296 : :
- 297 : : /**
- 298 : : * @notice Returns the number of frozen addresses.
- 299 : : */
- 300 : 4 : function frozenlistAddressCount() public view returns (uint256) {
- 301 : 4 : return _frozenlistCount();
- 302 : : }
- 303 : :
- 304 : : /**
- 305 : : * @notice Returns true if the address is in the frozenlist.
- 306 : : */
- 307 : 12 : function isFrozen(address targetAddress) public view returns (bool) {
- 308 : 12 : return _isFrozen(targetAddress);
- 309 : : }
- 310 : :
- 311 : : /**
- 312 : : * @notice ERC-2980 getter: returns true if the address is frozen.
- 313 : : */
- 314 : 4 : function frozenlist(address _operator) public view virtual override(IERC2980) returns (bool) {
- 315 : 4 : return _isFrozen(_operator);
- 316 : : }
- 317 : :
- 318 : : /**
- 319 : : * @notice Checks multiple addresses for frozenlist membership.
- 320 : : */
- 321 : 1 : function areFrozen(address[] memory targetAddresses) public view returns (bool[] memory results) {
- 322 : 1 : results = new bool[](targetAddresses.length);
- 323 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
- 324 : 2 : results[i] = _isFrozen(targetAddresses[i]);
+ 291 : 4 : function frozenlist(address _operator) public view virtual override(IERC2980) returns (bool) {
+ 292 : 4 : return _isFrozen(_operator);
+ 293 : : }
+ 294 : :
+ 295 : : /**
+ 296 : : * @notice Checks multiple addresses for frozenlist membership.
+ 297 : : */
+ 298 : 1 : function areFrozen(address[] memory targetAddresses) public view returns (bool[] memory results) {
+ 299 : 1 : results = new bool[](targetAddresses.length);
+ 300 : 1 : for (uint256 i = 0; i < targetAddresses.length; ++i) {
+ 301 : 2 : results[i] = _isFrozen(targetAddresses[i]);
+ 302 : : }
+ 303 : : }
+ 304 : :
+ 305 : : /*//////////////////////////////////////////////////////////////
+ 306 : : INTERNAL FUNCTIONS
+ 307 : : //////////////////////////////////////////////////////////////*/
+ 308 : :
+ 309 : 24 : function _detectTransferRestriction(
+ 310 : : address from,
+ 311 : : address to,
+ 312 : : uint256 /* value */
+ 313 : : )
+ 314 : : internal
+ 315 : : view
+ 316 : : virtual
+ 317 : : override
+ 318 : : returns (uint8)
+ 319 : : {
+ 320 : : // Frozenlist check has priority
+ 321 [ + + ]: 24 : if (_isFrozen(from)) {
+ 322 : 4 : return CODE_ADDRESS_FROM_IS_FROZEN;
+ 323 [ + ]: 20 : } else if (_isFrozen(to)) {
+ 324 : 4 : return CODE_ADDRESS_TO_IS_FROZEN;
325 : : }
- 326 : : }
- 327 : :
- 328 : : /*//////////////////////////////////////////////////////////////
- 329 : : INTERFACE SUPPORT
- 330 : : //////////////////////////////////////////////////////////////*/
- 331 : :
- 332 : 1 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
- 333 : 1 : return RuleTransferValidation.supportsInterface(interfaceId);
- 334 : : }
- 335 : :
- 336 : : /*//////////////////////////////////////////////////////////////
- 337 : : ACCESS CONTROL
- 338 : : //////////////////////////////////////////////////////////////*/
- 339 : :
- 340 : 6 : modifier onlyWhitelistAdd() {
- 341 : 6 : _authorizeWhitelistAdd();
- 342 : : _;
- 343 : : }
- 344 : :
- 345 : 7 : modifier onlyWhitelistRemove() {
- 346 : 7 : _authorizeWhitelistRemove();
- 347 : : _;
- 348 : : }
- 349 : :
- 350 : 6 : modifier onlyFrozenlistAdd() {
- 351 : 6 : _authorizeFrozenlistAdd();
- 352 : : _;
- 353 : : }
- 354 : :
- 355 : 2 : modifier onlyFrozenlistRemove() {
- 356 : 2 : _authorizeFrozenlistRemove();
- 357 : : _;
- 358 : : }
- 359 : :
- 360 : : function _authorizeWhitelistAdd() internal view virtual;
- 361 : : function _authorizeWhitelistRemove() internal view virtual;
- 362 : : function _authorizeFrozenlistAdd() internal view virtual;
- 363 : : function _authorizeFrozenlistRemove() internal view virtual;
- 364 : :
- 365 : : /*//////////////////////////////////////////////////////////////
- 366 : : ERC-2771 META TX
- 367 : : //////////////////////////////////////////////////////////////*/
- 368 : :
- 369 : 267 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
- 370 : 267 : return ERC2771Context._msgSender();
- 371 : : }
- 372 : :
- 373 : 2 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
- 374 : 2 : return ERC2771Context._msgData();
- 375 : : }
- 376 : :
- 377 : 269 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
- 378 : 269 : return ERC2771Context._contextSuffixLength();
- 379 : : }
- 380 : : }
+ 326 : : // Whitelist check: only the recipient must be whitelisted
+ 327 [ + ]: 16 : if (!_isWhitelisted(to)) {
+ 328 : 5 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
+ 329 : : }
+ 330 : 11 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 331 : : }
+ 332 : :
+ 333 : 8 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 334 : : internal
+ 335 : : view
+ 336 : : virtual
+ 337 : : override
+ 338 : : returns (uint8)
+ 339 : : {
+ 340 [ + ]: 8 : if (_isFrozen(spender)) {
+ 341 : 4 : return CODE_ADDRESS_SPENDER_IS_FROZEN;
+ 342 : : }
+ 343 : 4 : return _detectTransferRestriction(from, to, value);
+ 344 : : }
+ 345 : :
+ 346 : 5 : function _transferred(address from, address to, uint256 value) internal view virtual override {
+ 347 : 5 : uint8 code = _detectTransferRestriction(from, to, value);
+ 348 [ + + ]: 5 : require(
+ 349 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 350 : : RuleERC2980_InvalidTransfer(address(this), from, to, value, code)
+ 351 : : );
+ 352 : : }
+ 353 : :
+ 354 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 355 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 356 [ + + ]: 3 : require(
+ 357 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 358 : : RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 359 : : );
+ 360 : : }
+ 361 : :
+ 362 : 272 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
+ 363 : 272 : return ERC2771Context._msgSender();
+ 364 : : }
+ 365 : :
+ 366 : 2 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
+ 367 : 2 : return ERC2771Context._msgData();
+ 368 : : }
+ 369 : :
+ 370 : 274 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
+ 371 : 274 : return ERC2771Context._contextSuffixLength();
+ 372 : : }
+ 373 : : }
@@ -456,7 +449,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html
index 09d303a..0798224 100644
--- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleIdentityRegistryBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,74 +53,78 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func.html
index 39a7d2d..36cb85d 100644
--- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleIdentityRegistryBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,74 +53,78 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.gcov.html
similarity index 57%
rename from doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.gcov.html
index 6e8d3ac..a9bd14c 100644
--- a/doc/coverage/coverage/abstract/base/RuleIdentityRegistryBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleIdentityRegistryBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -87,123 +87,140 @@
16 : : abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegistryInvariantStorage {
17 : : IIdentityRegistryVerified public identityRegistry;
18 : :
- 19 : 26 : constructor(address identityRegistry_) {
- 20 [ + ]: 26 : if (identityRegistry_ != address(0)) {
- 21 : 25 : identityRegistry = IIdentityRegistryVerified(identityRegistry_);
- 22 : : }
- 23 : : }
- 24 : :
- 25 : 4 : function setIdentityRegistry(address newRegistry) public onlyIdentityRegistryManager {
- 26 [ + + ]: 2 : require(newRegistry != address(0), RuleIdentityRegistry_RegistryAddressZeroNotAllowed());
- 27 : 1 : identityRegistry = IIdentityRegistryVerified(newRegistry);
- 28 : 1 : emit IdentityRegistryUpdated(newRegistry);
- 29 : : }
- 30 : :
- 31 : 5 : function clearIdentityRegistry() public onlyIdentityRegistryManager {
- 32 : 3 : identityRegistry = IIdentityRegistryVerified(address(0));
- 33 : 3 : emit IdentityRegistryUpdated(address(0));
- 34 : : }
- 35 : :
- 36 : 16 : function _detectTransferRestriction(
- 37 : : address from,
- 38 : : address to,
- 39 : : uint256 /* value */
- 40 : : )
- 41 : : internal
- 42 : : view
- 43 : : override
- 44 : : returns (uint8)
- 45 : : {
- 46 [ + ]: 16 : if (address(identityRegistry) == address(0)) {
- 47 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 48 : : }
- 49 [ + ]: 13 : if (to == address(0)) {
- 50 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 51 : : }
+ 19 : : /*//////////////////////////////////////////////////////////////
+ 20 : : CONSTRUCTOR
+ 21 : : //////////////////////////////////////////////////////////////*/
+ 22 : :
+ 23 : 26 : constructor(address identityRegistry_) {
+ 24 [ + ]: 26 : if (identityRegistry_ != address(0)) {
+ 25 : 25 : identityRegistry = IIdentityRegistryVerified(identityRegistry_);
+ 26 : : }
+ 27 : : }
+ 28 : :
+ 29 : : /*//////////////////////////////////////////////////////////////
+ 30 : : ACCESS CONTROL
+ 31 : : //////////////////////////////////////////////////////////////*/
+ 32 : :
+ 33 : 5 : modifier onlyIdentityRegistryManager() {
+ 34 : 5 : _authorizeIdentityRegistryManager();
+ 35 : : _;
+ 36 : : }
+ 37 : :
+ 38 : 0 : function _authorizeIdentityRegistryManager() internal view virtual;
+ 39 : :
+ 40 : : /*//////////////////////////////////////////////////////////////
+ 41 : : EXTERNAL FUNCTIONS
+ 42 : : //////////////////////////////////////////////////////////////*/
+ 43 : :
+ 44 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+ 45 : 4 : return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED
+ 46 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED;
+ 47 : : }
+ 48 : :
+ 49 : : /*//////////////////////////////////////////////////////////////
+ 50 : : PUBLIC FUNCTIONS
+ 51 : : //////////////////////////////////////////////////////////////*/
52 : :
- 53 [ + ]: 11 : if (from != address(0) && !identityRegistry.isVerified(from)) {
- 54 : 4 : return CODE_ADDRESS_FROM_NOT_VERIFIED;
- 55 : : }
- 56 [ + ]: 7 : if (to != address(0) && !identityRegistry.isVerified(to)) {
- 57 : 1 : return CODE_ADDRESS_TO_NOT_VERIFIED;
- 58 : : }
- 59 : 6 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 60 : : }
- 61 : :
- 62 : 9 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 63 : : internal
- 64 : : view
- 65 : : override
- 66 : : returns (uint8)
- 67 : : {
- 68 [ + ]: 9 : if (address(identityRegistry) == address(0)) {
- 69 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 70 : : }
- 71 [ + ]: 8 : if (to == address(0)) {
- 72 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 73 : : }
- 74 [ + ]: 7 : if (spender != address(0) && !identityRegistry.isVerified(spender)) {
- 75 : 4 : return CODE_ADDRESS_SPENDER_NOT_VERIFIED;
- 76 : : }
- 77 : 3 : return _detectTransferRestriction(from, to, value);
- 78 : : }
- 79 : :
- 80 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- 81 : 2 : _transferred(from, to, value);
- 82 : : }
- 83 : :
- 84 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- 85 : 2 : _transferredFrom(spender, from, to, value);
+ 53 : 4 : function setIdentityRegistry(address newRegistry) public onlyIdentityRegistryManager {
+ 54 [ + + ]: 2 : require(newRegistry != address(0), RuleIdentityRegistry_RegistryAddressZeroNotAllowed());
+ 55 : 1 : identityRegistry = IIdentityRegistryVerified(newRegistry);
+ 56 : 1 : emit IdentityRegistryUpdated(newRegistry);
+ 57 : : }
+ 58 : :
+ 59 : 5 : function clearIdentityRegistry() public onlyIdentityRegistryManager {
+ 60 : 3 : identityRegistry = IIdentityRegistryVerified(address(0));
+ 61 : 3 : emit IdentityRegistryUpdated(address(0));
+ 62 : : }
+ 63 : :
+ 64 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ 65 : 2 : _transferred(from, to, value);
+ 66 : : }
+ 67 : :
+ 68 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ 69 : 2 : _transferredFrom(spender, from, to, value);
+ 70 : : }
+ 71 : :
+ 72 : 4 : function messageForTransferRestriction(uint8 restrictionCode)
+ 73 : : public
+ 74 : : pure
+ 75 : : override(IERC1404)
+ 76 : : returns (string memory)
+ 77 : : {
+ 78 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) {
+ 79 : 1 : return TEXT_ADDRESS_FROM_NOT_VERIFIED;
+ 80 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) {
+ 81 : 1 : return TEXT_ADDRESS_TO_NOT_VERIFIED;
+ 82 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) {
+ 83 : 1 : return TEXT_ADDRESS_SPENDER_NOT_VERIFIED;
+ 84 : : }
+ 85 : 1 : return TEXT_CODE_NOT_FOUND;
86 : : }
87 : :
- 88 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual override {
- 89 : 2 : uint8 code = _detectTransferRestriction(from, to, value);
- 90 [ + + ]: 2 : require(
- 91 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 92 : : RuleIdentityRegistry_InvalidTransfer(address(this), from, to, value, code)
- 93 : : );
- 94 : : }
- 95 : :
- 96 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 97 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 98 [ + + ]: 2 : require(
- 99 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 100 : : RuleIdentityRegistry_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 101 : : );
- 102 : : }
- 103 : :
- 104 : 4 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
- 105 : 4 : return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED
- 106 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED;
- 107 : : }
+ 88 : : /*//////////////////////////////////////////////////////////////
+ 89 : : INTERNAL FUNCTIONS
+ 90 : : //////////////////////////////////////////////////////////////*/
+ 91 : :
+ 92 : 16 : function _detectTransferRestriction(
+ 93 : : address from,
+ 94 : : address to,
+ 95 : : uint256 /* value */
+ 96 : : )
+ 97 : : internal
+ 98 : : view
+ 99 : : override
+ 100 : : returns (uint8)
+ 101 : : {
+ 102 [ + ]: 16 : if (address(identityRegistry) == address(0)) {
+ 103 : 3 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 104 : : }
+ 105 [ + ]: 13 : if (to == address(0)) {
+ 106 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 107 : : }
108 : :
- 109 : 4 : function messageForTransferRestriction(uint8 restrictionCode)
- 110 : : public
- 111 : : pure
- 112 : : override(IERC1404)
- 113 : : returns (string memory)
- 114 : : {
- 115 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) {
- 116 : 1 : return TEXT_ADDRESS_FROM_NOT_VERIFIED;
- 117 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) {
- 118 : 1 : return TEXT_ADDRESS_TO_NOT_VERIFIED;
- 119 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) {
- 120 : 1 : return TEXT_ADDRESS_SPENDER_NOT_VERIFIED;
- 121 : : }
- 122 : 1 : return TEXT_CODE_NOT_FOUND;
- 123 : : }
- 124 : :
- 125 : : /*//////////////////////////////////////////////////////////////
- 126 : : ACCESS CONTROL
- 127 : : //////////////////////////////////////////////////////////////*/
- 128 : :
- 129 : 5 : modifier onlyIdentityRegistryManager() {
- 130 : 5 : _authorizeIdentityRegistryManager();
- 131 : : _;
- 132 : : }
- 133 : :
- 134 : : function _authorizeIdentityRegistryManager() internal view virtual;
- 135 : : }
+ 109 [ + ]: 11 : if (from != address(0) && !identityRegistry.isVerified(from)) {
+ 110 : 4 : return CODE_ADDRESS_FROM_NOT_VERIFIED;
+ 111 : : }
+ 112 [ + ]: 7 : if (to != address(0) && !identityRegistry.isVerified(to)) {
+ 113 : 1 : return CODE_ADDRESS_TO_NOT_VERIFIED;
+ 114 : : }
+ 115 : 6 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 116 : : }
+ 117 : :
+ 118 : 9 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 119 : : internal
+ 120 : : view
+ 121 : : override
+ 122 : : returns (uint8)
+ 123 : : {
+ 124 [ + ]: 9 : if (address(identityRegistry) == address(0)) {
+ 125 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 126 : : }
+ 127 [ + ]: 8 : if (to == address(0)) {
+ 128 : 1 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 129 : : }
+ 130 [ + ]: 7 : if (spender != address(0) && !identityRegistry.isVerified(spender)) {
+ 131 : 4 : return CODE_ADDRESS_SPENDER_NOT_VERIFIED;
+ 132 : : }
+ 133 : 3 : return _detectTransferRestriction(from, to, value);
+ 134 : : }
+ 135 : :
+ 136 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual override {
+ 137 : 2 : uint8 code = _detectTransferRestriction(from, to, value);
+ 138 [ + + ]: 2 : require(
+ 139 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 140 : : RuleIdentityRegistry_InvalidTransfer(address(this), from, to, value, code)
+ 141 : : );
+ 142 : : }
+ 143 : :
+ 144 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 145 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 146 [ + + ]: 2 : require(
+ 147 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 148 : : RuleIdentityRegistry_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 149 : : );
+ 150 : : }
+ 151 : :
+ 152 : : }
@@ -211,7 +228,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html
index f2efd55..1c84b39 100644
--- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleMaxTotalSupplyBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,74 +53,78 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func.html
index 3ca3e52..6cd4772 100644
--- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleMaxTotalSupplyBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,74 +53,78 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html
similarity index 65%
rename from doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html
index 4654187..d985499 100644
--- a/doc/coverage/coverage/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleMaxTotalSupplyBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -88,103 +88,119 @@
17 : : ITotalSupply public tokenContract;
18 : : uint256 public maxTotalSupply;
19 : :
- 20 : 25 : constructor(address tokenContract_, uint256 maxTotalSupply_) {
- 21 [ + + ]: 25 : require(tokenContract_ != address(0), RuleMaxTotalSupply_TokenAddressZeroNotAllowed());
- 22 : 24 : tokenContract = ITotalSupply(tokenContract_);
- 23 : 24 : maxTotalSupply = maxTotalSupply_;
- 24 : : }
- 25 : :
- 26 : 260 : function setMaxTotalSupply(uint256 newMaxTotalSupply) public onlyMaxTotalSupplyManager {
- 27 : 258 : maxTotalSupply = newMaxTotalSupply;
- 28 : 258 : emit MaxTotalSupplyUpdated(newMaxTotalSupply);
- 29 : : }
- 30 : :
- 31 : 4 : function setTokenContract(address newTokenContract) public onlyMaxTotalSupplyManager {
- 32 [ + + ]: 2 : require(newTokenContract != address(0), RuleMaxTotalSupply_TokenAddressZeroNotAllowed());
- 33 : 1 : tokenContract = ITotalSupply(newTokenContract);
- 34 : 1 : emit TokenContractUpdated(newTokenContract);
- 35 : : }
- 36 : :
- 37 : 271 : function _detectTransferRestriction(
- 38 : : address from,
- 39 : : address,
- 40 : : /* to */
- 41 : : uint256 value
- 42 : : )
- 43 : : internal
- 44 : : view
- 45 : : override
- 46 : : returns (uint8)
- 47 : : {
- 48 [ + ]: 271 : if (from == address(0)) {
- 49 : 268 : uint256 currentSupply = tokenContract.totalSupply();
- 50 [ + ]: 268 : if (currentSupply + value > maxTotalSupply) {
- 51 : 176 : return CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
- 52 : : }
- 53 : : }
- 54 : 95 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 20 : : /*//////////////////////////////////////////////////////////////
+ 21 : : CONSTRUCTOR
+ 22 : : //////////////////////////////////////////////////////////////*/
+ 23 : :
+ 24 : 25 : constructor(address tokenContract_, uint256 maxTotalSupply_) {
+ 25 [ + + ]: 25 : require(tokenContract_ != address(0), RuleMaxTotalSupply_TokenAddressZeroNotAllowed());
+ 26 : 24 : tokenContract = ITotalSupply(tokenContract_);
+ 27 : 24 : maxTotalSupply = maxTotalSupply_;
+ 28 : : }
+ 29 : :
+ 30 : : /*//////////////////////////////////////////////////////////////
+ 31 : : EXTERNAL FUNCTIONS
+ 32 : : //////////////////////////////////////////////////////////////*/
+ 33 : :
+ 34 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+ 35 : 2 : return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
+ 36 : : }
+ 37 : :
+ 38 : : /*//////////////////////////////////////////////////////////////
+ 39 : : PUBLIC FUNCTIONS
+ 40 : : //////////////////////////////////////////////////////////////*/
+ 41 : :
+ 42 : 260 : function setMaxTotalSupply(uint256 newMaxTotalSupply) public onlyMaxTotalSupplyManager {
+ 43 : 258 : maxTotalSupply = newMaxTotalSupply;
+ 44 : 258 : emit MaxTotalSupplyUpdated(newMaxTotalSupply);
+ 45 : : }
+ 46 : :
+ 47 : 4 : function setTokenContract(address newTokenContract) public onlyMaxTotalSupplyManager {
+ 48 [ + + ]: 2 : require(newTokenContract != address(0), RuleMaxTotalSupply_TokenAddressZeroNotAllowed());
+ 49 : 1 : tokenContract = ITotalSupply(newTokenContract);
+ 50 : 1 : emit TokenContractUpdated(newTokenContract);
+ 51 : : }
+ 52 : :
+ 53 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ 54 : 2 : _transferred(from, to, value);
55 : : }
56 : :
- 57 : 2 : function _detectTransferRestrictionFrom(address, address from, address to, uint256 value)
- 58 : : internal
- 59 : : view
- 60 : : override
- 61 : : returns (uint8)
- 62 : : {
- 63 : 2 : return _detectTransferRestriction(from, to, value);
- 64 : : }
- 65 : :
- 66 : 2 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- 67 : 2 : _transferred(from, to, value);
- 68 : : }
- 69 : :
- 70 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- 71 : 2 : _transferredFrom(spender, from, to, value);
- 72 : : }
- 73 : :
- 74 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual {
- 75 : 2 : uint8 code = _detectTransferRestriction(from, to, value);
- 76 [ + + ]: 2 : require(
- 77 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 78 : : RuleMaxTotalSupply_InvalidTransfer(address(this), from, to, value, code)
- 79 : : );
+ 57 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ 58 : 2 : _transferredFrom(spender, from, to, value);
+ 59 : : }
+ 60 : :
+ 61 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
+ 62 : : public
+ 63 : : pure
+ 64 : : override(IERC1404)
+ 65 : : returns (string memory)
+ 66 : : {
+ 67 [ + ]: 2 : if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) {
+ 68 : 1 : return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED;
+ 69 : : }
+ 70 : 1 : return TEXT_CODE_NOT_FOUND;
+ 71 : : }
+ 72 : :
+ 73 : : /*//////////////////////////////////////////////////////////////
+ 74 : : ACCESS CONTROL
+ 75 : : //////////////////////////////////////////////////////////////*/
+ 76 : :
+ 77 : 260 : modifier onlyMaxTotalSupplyManager() {
+ 78 : 260 : _authorizeMaxTotalSupplyManager();
+ 79 : : _;
80 : : }
81 : :
- 82 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual {
- 83 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 84 [ + + ]: 2 : require(
- 85 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 86 : : RuleMaxTotalSupply_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 87 : : );
- 88 : : }
- 89 : :
- 90 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
- 91 : 2 : return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
- 92 : : }
- 93 : :
- 94 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
- 95 : : public
- 96 : : pure
- 97 : : override(IERC1404)
- 98 : : returns (string memory)
- 99 : : {
- 100 [ + ]: 2 : if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) {
- 101 : 1 : return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED;
- 102 : : }
- 103 : 1 : return TEXT_CODE_NOT_FOUND;
- 104 : : }
- 105 : :
- 106 : : /*//////////////////////////////////////////////////////////////
- 107 : : ACCESS CONTROL
- 108 : : //////////////////////////////////////////////////////////////*/
- 109 : :
- 110 : 260 : modifier onlyMaxTotalSupplyManager() {
- 111 : 260 : _authorizeMaxTotalSupplyManager();
- 112 : : _;
- 113 : : }
- 114 : :
- 115 : : function _authorizeMaxTotalSupplyManager() internal view virtual;
- 116 : : }
+ 82 : 0 : function _authorizeMaxTotalSupplyManager() internal view virtual;
+ 83 : :
+ 84 : : /*//////////////////////////////////////////////////////////////
+ 85 : : INTERNAL FUNCTIONS
+ 86 : : //////////////////////////////////////////////////////////////*/
+ 87 : :
+ 88 : 271 : function _detectTransferRestriction(
+ 89 : : address from,
+ 90 : : address,
+ 91 : : /* to */
+ 92 : : uint256 value
+ 93 : : )
+ 94 : : internal
+ 95 : : view
+ 96 : : override
+ 97 : : returns (uint8)
+ 98 : : {
+ 99 [ + ]: 271 : if (from == address(0)) {
+ 100 : 268 : uint256 currentSupply = tokenContract.totalSupply();
+ 101 [ + ]: 268 : if (currentSupply + value > maxTotalSupply) {
+ 102 : 186 : return CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
+ 103 : : }
+ 104 : : }
+ 105 : 85 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 106 : : }
+ 107 : :
+ 108 : 2 : function _detectTransferRestrictionFrom(address, address from, address to, uint256 value)
+ 109 : : internal
+ 110 : : view
+ 111 : : override
+ 112 : : returns (uint8)
+ 113 : : {
+ 114 : 2 : return _detectTransferRestriction(from, to, value);
+ 115 : : }
+ 116 : :
+ 117 : 2 : function _transferred(address from, address to, uint256 value) internal view virtual {
+ 118 : 2 : uint8 code = _detectTransferRestriction(from, to, value);
+ 119 [ + + ]: 2 : require(
+ 120 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 121 : : RuleMaxTotalSupply_InvalidTransfer(address(this), from, to, value, code)
+ 122 : : );
+ 123 : : }
+ 124 : :
+ 125 : 2 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual {
+ 126 : 2 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 127 [ + + ]: 2 : require(
+ 128 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 129 : : RuleMaxTotalSupply_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 130 : : );
+ 131 : : }
+ 132 : : }
@@ -192,7 +208,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html
similarity index 61%
rename from doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html
index fa20f29..fdef284 100644
--- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSanctionsListBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSanctionsListBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,78 +53,82 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func.html
similarity index 61%
rename from doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func.html
index 142069e..e7987cd 100644
--- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSanctionsListBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSanctionsListBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,78 +53,82 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.gcov.html
similarity index 69%
rename from doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.gcov.html
index 7ddbdd5..4696c16 100644
--- a/doc/coverage/coverage/abstract/base/RuleSanctionsListBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSanctionsListBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSanctionsListBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSanctionsListBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -88,120 +88,136 @@
17 : : abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapter, RuleSanctionsListInvariantStorage {
18 : : ISanctionsList public sanctionsList;
19 : :
- 20 : 46 : constructor(address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
- 21 : : MetaTxModuleStandalone(forwarderIrrevocable)
- 22 : : {
- 23 [ + ]: 45 : if (address(sanctionContractOracle_) != address(0)) {
- 24 : 20 : _setSanctionListOracle(sanctionContractOracle_);
- 25 : : }
- 26 : : }
- 27 : :
- 28 : 84 : function _detectTransferRestriction(
- 29 : : address from,
- 30 : : address to,
- 31 : : uint256 /* value */
- 32 : : )
- 33 : : internal
- 34 : : view
- 35 : : override
- 36 : : returns (uint8)
- 37 : : {
- 38 [ + ]: 84 : if (address(sanctionsList) != address(0)) {
- 39 [ + + ]: 77 : if (sanctionsList.isSanctioned(from)) {
- 40 : 10 : return CODE_ADDRESS_FROM_IS_SANCTIONED;
- 41 [ + ]: 67 : } else if (sanctionsList.isSanctioned(to)) {
- 42 : 12 : return CODE_ADDRESS_TO_IS_SANCTIONED;
- 43 : : }
- 44 : : }
- 45 : 62 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
- 46 : : }
- 47 : :
- 48 : 16 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 49 : : internal
- 50 : : view
- 51 : : virtual
- 52 : : override
- 53 : : returns (uint8)
- 54 : : {
- 55 [ + ]: 16 : if (address(sanctionsList) != address(0)) {
- 56 [ + ]: 15 : if (sanctionsList.isSanctioned(spender)) {
- 57 : 6 : return CODE_ADDRESS_SPENDER_IS_SANCTIONED;
- 58 : : }
- 59 : 9 : return _detectTransferRestriction(from, to, value);
- 60 : : }
- 61 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
- 62 : : }
- 63 : :
- 64 : 3 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
- 65 : 3 : return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED
- 66 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED;
- 67 : : }
- 68 : :
- 69 : 4 : function messageForTransferRestriction(uint8 restrictionCode)
- 70 : : public
- 71 : : pure
- 72 : : override(IERC1404)
- 73 : : returns (string memory)
- 74 : : {
- 75 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) {
- 76 : 1 : return TEXT_ADDRESS_FROM_IS_SANCTIONED;
- 77 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) {
- 78 : 1 : return TEXT_ADDRESS_TO_IS_SANCTIONED;
- 79 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) {
- 80 : 1 : return TEXT_ADDRESS_SPENDER_IS_SANCTIONED;
- 81 : : }
- 82 : 1 : return TEXT_CODE_NOT_FOUND;
- 83 : : }
- 84 : :
- 85 : 17 : function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager {
- 86 [ + + ]: 15 : require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed());
- 87 : 14 : _setSanctionListOracle(sanctionContractOracle_);
- 88 : : }
- 89 : :
- 90 : 3 : function clearSanctionListOracle() public virtual onlySanctionListManager {
- 91 : 3 : _setSanctionListOracle(ISanctionsList(address(0)));
- 92 : : }
- 93 : :
- 94 : 43 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- 95 : 43 : _transferred(from, to, value);
- 96 : : }
- 97 : :
- 98 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- 99 : 2 : _transferredFrom(spender, from, to, value);
- 100 : : }
- 101 : :
- 102 : 47 : function _transferred(address from, address to, uint256 value) internal view virtual override {
- 103 : 47 : uint8 code = _detectTransferRestriction(from, to, value);
- 104 [ + + ]: 47 : require(
- 105 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 106 : : RuleSanctionsList_InvalidTransfer(address(this), from, to, value, code)
- 107 : : );
- 108 : : }
- 109 : :
- 110 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 111 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 112 [ + + ]: 3 : require(
- 113 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 114 : : RuleSanctionsList_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 115 : : );
- 116 : : }
- 117 : :
- 118 : 37 : function _setSanctionListOracle(ISanctionsList sanctionContractOracle_) internal virtual {
- 119 : 37 : sanctionsList = sanctionContractOracle_;
- 120 : 37 : emit SetSanctionListOracle(sanctionContractOracle_);
- 121 : : }
- 122 : :
- 123 : : /*//////////////////////////////////////////////////////////////
- 124 : : ACCESS CONTROL
- 125 : : //////////////////////////////////////////////////////////////*/
- 126 : :
- 127 : 3 : modifier onlySanctionListManager() {
- 128 : 3 : _authorizeSanctionListManager();
- 129 : : _;
- 130 : : }
- 131 : :
- 132 : : function _authorizeSanctionListManager() internal view virtual;
- 133 : : }
+ 20 : : /*//////////////////////////////////////////////////////////////
+ 21 : : CONSTRUCTOR
+ 22 : : //////////////////////////////////////////////////////////////*/
+ 23 : :
+ 24 : 46 : constructor(address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
+ 25 : : MetaTxModuleStandalone(forwarderIrrevocable)
+ 26 : : {
+ 27 [ + ]: 45 : if (address(sanctionContractOracle_) != address(0)) {
+ 28 : 20 : _setSanctionListOracle(sanctionContractOracle_);
+ 29 : : }
+ 30 : : }
+ 31 : :
+ 32 : : /*//////////////////////////////////////////////////////////////
+ 33 : : EXTERNAL FUNCTIONS
+ 34 : : //////////////////////////////////////////////////////////////*/
+ 35 : :
+ 36 : 3 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
+ 37 : 3 : return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED
+ 38 : 1 : || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED;
+ 39 : : }
+ 40 : :
+ 41 : : /*//////////////////////////////////////////////////////////////
+ 42 : : PUBLIC FUNCTIONS
+ 43 : : //////////////////////////////////////////////////////////////*/
+ 44 : :
+ 45 : 17 : function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager {
+ 46 [ + + ]: 15 : require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed());
+ 47 : 14 : _setSanctionListOracle(sanctionContractOracle_);
+ 48 : : }
+ 49 : :
+ 50 : 3 : function clearSanctionListOracle() public virtual onlySanctionListManager {
+ 51 : 3 : _setSanctionListOracle(ISanctionsList(address(0)));
+ 52 : : }
+ 53 : :
+ 54 : 43 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ 55 : 43 : _transferred(from, to, value);
+ 56 : : }
+ 57 : :
+ 58 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ 59 : 2 : _transferredFrom(spender, from, to, value);
+ 60 : : }
+ 61 : :
+ 62 : 4 : function messageForTransferRestriction(uint8 restrictionCode)
+ 63 : : public
+ 64 : : pure
+ 65 : : override(IERC1404)
+ 66 : : returns (string memory)
+ 67 : : {
+ 68 [ + + ]: 4 : if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) {
+ 69 : 1 : return TEXT_ADDRESS_FROM_IS_SANCTIONED;
+ 70 [ + + ]: 3 : } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) {
+ 71 : 1 : return TEXT_ADDRESS_TO_IS_SANCTIONED;
+ 72 [ + ]: 2 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) {
+ 73 : 1 : return TEXT_ADDRESS_SPENDER_IS_SANCTIONED;
+ 74 : : }
+ 75 : 1 : return TEXT_CODE_NOT_FOUND;
+ 76 : : }
+ 77 : :
+ 78 : : /*//////////////////////////////////////////////////////////////
+ 79 : : ACCESS CONTROL
+ 80 : : //////////////////////////////////////////////////////////////*/
+ 81 : :
+ 82 : 3 : modifier onlySanctionListManager() {
+ 83 : 3 : _authorizeSanctionListManager();
+ 84 : : _;
+ 85 : : }
+ 86 : :
+ 87 : 0 : function _authorizeSanctionListManager() internal view virtual;
+ 88 : :
+ 89 : : /*//////////////////////////////////////////////////////////////
+ 90 : : INTERNAL FUNCTIONS
+ 91 : : //////////////////////////////////////////////////////////////*/
+ 92 : :
+ 93 : 84 : function _detectTransferRestriction(
+ 94 : : address from,
+ 95 : : address to,
+ 96 : : uint256 /* value */
+ 97 : : )
+ 98 : : internal
+ 99 : : view
+ 100 : : override
+ 101 : : returns (uint8)
+ 102 : : {
+ 103 [ + ]: 84 : if (address(sanctionsList) != address(0)) {
+ 104 [ + + ]: 77 : if (sanctionsList.isSanctioned(from)) {
+ 105 : 10 : return CODE_ADDRESS_FROM_IS_SANCTIONED;
+ 106 [ + ]: 67 : } else if (sanctionsList.isSanctioned(to)) {
+ 107 : 12 : return CODE_ADDRESS_TO_IS_SANCTIONED;
+ 108 : : }
+ 109 : : }
+ 110 : 62 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 111 : : }
+ 112 : :
+ 113 : 16 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 114 : : internal
+ 115 : : view
+ 116 : : virtual
+ 117 : : override
+ 118 : : returns (uint8)
+ 119 : : {
+ 120 [ + ]: 16 : if (address(sanctionsList) != address(0)) {
+ 121 [ + ]: 15 : if (sanctionsList.isSanctioned(spender)) {
+ 122 : 6 : return CODE_ADDRESS_SPENDER_IS_SANCTIONED;
+ 123 : : }
+ 124 : 9 : return _detectTransferRestriction(from, to, value);
+ 125 : : }
+ 126 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 127 : : }
+ 128 : :
+ 129 : 47 : function _transferred(address from, address to, uint256 value) internal view virtual override {
+ 130 : 47 : uint8 code = _detectTransferRestriction(from, to, value);
+ 131 [ + + ]: 47 : require(
+ 132 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 133 : : RuleSanctionsList_InvalidTransfer(address(this), from, to, value, code)
+ 134 : : );
+ 135 : : }
+ 136 : :
+ 137 : 3 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 138 : 3 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 139 [ + + ]: 3 : require(
+ 140 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 141 : : RuleSanctionsList_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 142 : : );
+ 143 : : }
+ 144 : :
+ 145 : 37 : function _setSanctionListOracle(ISanctionsList sanctionContractOracle_) internal virtual {
+ 146 : 37 : sanctionsList = sanctionContractOracle_;
+ 147 : 37 : emit SetSanctionListOracle(sanctionContractOracle_);
+ 148 : : }
+ 149 : : }
@@ -209,7 +225,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html
index 314e705..0bbdfbe 100644
--- a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,58 +53,58 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func.html
index e20e522..7bf8a35 100644
--- a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,58 +53,58 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html
similarity index 78%
rename from doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html
index 6f88cfd..c081701 100644
--- a/doc/coverage/coverage/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleSpenderWhitelistBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -85,62 +85,78 @@
14 : : * @dev Direct transfers (`transferred(from,to,value)`) are intentionally no-op.
15 : : */
16 : : abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage {
- 17 : : constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
- 18 : :
- 19 : 4 : function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) {
- 20 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 21 : : }
+ 17 : : /*//////////////////////////////////////////////////////////////
+ 18 : : CONSTRUCTOR
+ 19 : : //////////////////////////////////////////////////////////////*/
+ 20 : :
+ 21 : : constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
22 : :
- 23 : 13 : function _detectTransferRestrictionFrom(address spender, address, address, uint256)
- 24 : : internal
- 25 : : view
- 26 : : virtual
- 27 : : override
- 28 : : returns (uint8)
- 29 : : {
- 30 [ + ]: 13 : if (spender != address(0) && !_isAddressListed(spender)) {
- 31 : 5 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- 32 : : }
- 33 : 8 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 34 : : }
- 35 : :
- 36 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
- 37 : 2 : return restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- 38 : : }
+ 23 : : /*//////////////////////////////////////////////////////////////
+ 24 : : EXTERNAL FUNCTIONS
+ 25 : : //////////////////////////////////////////////////////////////*/
+ 26 : :
+ 27 : 2 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+ 28 : 2 : return restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 29 : : }
+ 30 : :
+ 31 : : /*//////////////////////////////////////////////////////////////
+ 32 : : PUBLIC FUNCTIONS
+ 33 : : //////////////////////////////////////////////////////////////*/
+ 34 : :
+ 35 : : /**
+ 36 : : * @dev Regular transfers are always accepted by this rule.
+ 37 : : */
+ 38 : 1 : function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
39 : :
- 40 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
- 41 : : public
- 42 : : pure
- 43 : : override(IERC1404)
- 44 : : returns (string memory)
- 45 : : {
- 46 [ + ]: 2 : if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) {
- 47 : 1 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED;
- 48 : : }
- 49 : 1 : return TEXT_CODE_NOT_FOUND;
- 50 : : }
- 51 : :
- 52 : : /**
- 53 : : * @dev Regular transfers are always accepted by this rule.
- 54 : : */
- 55 : 1 : function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
- 56 : :
- 57 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- 58 : 2 : _transferredFrom(spender, from, to, value);
- 59 : : }
- 60 : :
- 61 : 3 : function _transferred(address, address, uint256) internal view virtual override {
- 62 : : // no-op: regular transfers are intentionally ignored by this rule
- 63 : : }
- 64 : :
- 65 : 7 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 66 : 7 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 67 [ + + ]: 7 : require(
- 68 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- 69 : : RuleSpenderWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 70 : : );
- 71 : : }
- 72 : : }
+ 40 : 2 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ 41 : 2 : _transferredFrom(spender, from, to, value);
+ 42 : : }
+ 43 : :
+ 44 : 2 : function messageForTransferRestriction(uint8 restrictionCode)
+ 45 : : public
+ 46 : : pure
+ 47 : : override(IERC1404)
+ 48 : : returns (string memory)
+ 49 : : {
+ 50 [ + ]: 2 : if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) {
+ 51 : 1 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 52 : : }
+ 53 : 1 : return TEXT_CODE_NOT_FOUND;
+ 54 : : }
+ 55 : :
+ 56 : : /*//////////////////////////////////////////////////////////////
+ 57 : : INTERNAL FUNCTIONS
+ 58 : : //////////////////////////////////////////////////////////////*/
+ 59 : :
+ 60 : 4 : function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) {
+ 61 : 4 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 62 : : }
+ 63 : :
+ 64 : 13 : function _detectTransferRestrictionFrom(address spender, address, address, uint256)
+ 65 : : internal
+ 66 : : view
+ 67 : : virtual
+ 68 : : override
+ 69 : : returns (uint8)
+ 70 : : {
+ 71 [ + ]: 13 : if (spender != address(0) && !_isAddressListed(spender)) {
+ 72 : 5 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 73 : : }
+ 74 : 8 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 75 : : }
+ 76 : :
+ 77 : 3 : function _transferred(address, address, uint256) internal view virtual override {
+ 78 : : // no-op: regular transfers are intentionally ignored by this rule
+ 79 : : }
+ 80 : :
+ 81 : 7 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 82 : 7 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 83 [ + + ]: 7 : require(
+ 84 : : code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ 85 : : RuleSpenderWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 86 : : );
+ 87 : : }
+ 88 : : }
@@ -148,7 +164,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func-sort-c.html
similarity index 56%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func-sort-c.html
index 7c9168d..af592e2 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,80 +31,84 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func.html
similarity index 56%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func.html
index 635f9f5..b092a21 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,80 +31,84 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.gcov.html
similarity index 72%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.gcov.html
index d2383c6..58b5f4c 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -82,76 +82,94 @@
11 : : * @notice Core whitelist logic without access-control policy.
12 : : */
13 : : abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIdentityRegistryVerified {
- 14 : 159 : constructor(address forwarderIrrevocable, bool checkSpender_) RuleAddressSet(forwarderIrrevocable) {
- 15 : 159 : checkSpender = checkSpender_;
- 16 : : }
+ 14 : : /*//////////////////////////////////////////////////////////////
+ 15 : : CONSTRUCTOR
+ 16 : : //////////////////////////////////////////////////////////////*/
17 : :
- 18 : 53 : function _detectTransferRestriction(
- 19 : : address from,
- 20 : : address to,
- 21 : : uint256 /* value */
- 22 : : )
- 23 : : internal
- 24 : : view
- 25 : : virtual
- 26 : : override
- 27 : : returns (uint8)
- 28 : : {
- 29 [ + + ]: 53 : if (!isAddressListed(from)) {
- 30 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
- 31 [ + ]: 40 : } else if (!isAddressListed(to)) {
- 32 : 10 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
- 33 : : }
- 34 : 30 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 18 : 163 : constructor(address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ 19 : : RuleAddressSet(forwarderIrrevocable)
+ 20 : : {
+ 21 : 163 : checkSpender = checkSpender_;
+ 22 [ + ]: 2 : if (allowMintBurn) {
+ 23 : 2 : _addAddress(address(0));
+ 24 : 2 : emit AddAddress(address(0));
+ 25 : : }
+ 26 : : }
+ 27 : :
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : PUBLIC FUNCTIONS
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : 3 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
+ 33 : 2 : _setCheckSpender(value);
+ 34 : 2 : emit CheckSpenderUpdated(value);
35 : : }
36 : :
- 37 : 18 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 38 : : internal
+ 37 : 2 : function isVerified(address targetAddress)
+ 38 : : public
39 : : view
40 : : virtual
- 41 : : override
- 42 : : returns (uint8)
+ 41 : : override(IIdentityRegistryVerified)
+ 42 : : returns (bool isListed)
43 : : {
- 44 [ + ]: 18 : if (checkSpender && !isAddressListed(spender)) {
- 45 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- 46 : : }
- 47 : 10 : return _detectTransferRestriction(from, to, value);
- 48 : : }
- 49 : :
- 50 : 2 : function isVerified(address targetAddress)
- 51 : : public
- 52 : : view
- 53 : : virtual
- 54 : : override(IIdentityRegistryVerified)
- 55 : : returns (bool isListed)
- 56 : : {
- 57 : 2 : isListed = _isAddressListed(targetAddress);
+ 44 : 2 : isListed = _isAddressListed(targetAddress);
+ 45 : : }
+ 46 : :
+ 47 : 27 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
+ 48 : 27 : return RuleTransferValidation.supportsInterface(interfaceId);
+ 49 : : }
+ 50 : :
+ 51 : : /*//////////////////////////////////////////////////////////////
+ 52 : : ACCESS CONTROL
+ 53 : : //////////////////////////////////////////////////////////////*/
+ 54 : :
+ 55 : 3 : modifier onlyCheckSpenderManager() {
+ 56 : 3 : _authorizeCheckSpenderManager();
+ 57 : : _;
58 : : }
59 : :
- 60 : 3 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
- 61 : 2 : _setCheckSpender(value);
- 62 : 2 : emit CheckSpenderUpdated(value);
- 63 : : }
- 64 : :
- 65 : 2 : function _setCheckSpender(bool value) internal virtual {
- 66 : 2 : checkSpender = value;
- 67 : : }
- 68 : :
- 69 : 27 : function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
- 70 : 27 : return RuleTransferValidation.supportsInterface(interfaceId);
- 71 : : }
- 72 : :
- 73 : : /*//////////////////////////////////////////////////////////////
- 74 : : ACCESS CONTROL
- 75 : : //////////////////////////////////////////////////////////////*/
- 76 : :
- 77 : 3 : modifier onlyCheckSpenderManager() {
- 78 : 3 : _authorizeCheckSpenderManager();
- 79 : : _;
- 80 : : }
- 81 : :
- 82 : : function _authorizeCheckSpenderManager() internal view virtual;
- 83 : : }
+ 60 : 0 : function _authorizeCheckSpenderManager() internal view virtual;
+ 61 : :
+ 62 : : /*//////////////////////////////////////////////////////////////
+ 63 : : INTERNAL FUNCTIONS
+ 64 : : //////////////////////////////////////////////////////////////*/
+ 65 : :
+ 66 : 53 : function _detectTransferRestriction(
+ 67 : : address from,
+ 68 : : address to,
+ 69 : : uint256 /* value */
+ 70 : : )
+ 71 : : internal
+ 72 : : view
+ 73 : : virtual
+ 74 : : override
+ 75 : : returns (uint8)
+ 76 : : {
+ 77 [ + + ]: 53 : if (!isAddressListed(from)) {
+ 78 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
+ 79 [ + ]: 40 : } else if (!isAddressListed(to)) {
+ 80 : 10 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
+ 81 : : }
+ 82 : 30 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 83 : : }
+ 84 : :
+ 85 : 18 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 86 : : internal
+ 87 : : view
+ 88 : : virtual
+ 89 : : override
+ 90 : : returns (uint8)
+ 91 : : {
+ 92 [ + ]: 18 : if (checkSpender && !isAddressListed(spender)) {
+ 93 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 94 : : }
+ 95 : 10 : return _detectTransferRestriction(from, to, value);
+ 96 : : }
+ 97 : :
+ 98 : 2 : function _setCheckSpender(bool value) internal virtual {
+ 99 : 2 : checkSpender = value;
+ 100 : : }
+ 101 : : }
@@ -159,7 +177,7 @@
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html
index d3a41dc..a659423 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistWrapperBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,82 +53,86 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func.html
similarity index 60%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func.html
index 31a047e..cecc2cd 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistWrapperBase.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,82 +53,86 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html
similarity index 72%
rename from doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html
index 25e8229..908f101 100644
--- a/doc/coverage/coverage/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base/RuleWhitelistWrapperBase.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -73,243 +73,241 @@
2 : :
3 : : pragma solidity ^0.8.20;
4 : :
- 5 : : /* ==== OpenZeppelin === */
- 6 : : import {AccessControl} from "OZ/access/AccessControl.sol";
- 7 : : /* ==== Abstract contracts === */
- 8 : : import {MetaTxModuleStandalone, ERC2771Context} from "../../../../modules/MetaTxModuleStandalone.sol";
- 9 : : import {Context} from "OZ/utils/Context.sol";
- 10 : : import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol";
- 11 : : import {RuleTransferValidation} from "../core/RuleTransferValidation.sol";
- 12 : : /* ==== RuleEngine === */
- 13 : : import {RulesManagementModule} from "RuleEngine/modules/RulesManagementModule.sol";
- 14 : : /* ==== Interfaces === */
- 15 : : import {IAddressList} from "../../../interfaces/IAddressList.sol";
- 16 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol";
- 17 : :
- 18 : : /**
- 19 : : * @title Wrapper to call several different whitelist rules (base)
- 20 : : * @dev Child rules must implement {IAddressList}.
- 21 : : */
- 22 : : abstract contract RuleWhitelistWrapperBase is
- 23 : : RulesManagementModule,
- 24 : : MetaTxModuleStandalone,
- 25 : : RuleWhitelistShared,
- 26 : : IIdentityRegistryVerified
- 27 : : {
- 28 : : /*//////////////////////////////////////////////////////////////
- 29 : : CONSTRUCTOR
- 30 : : //////////////////////////////////////////////////////////////*/
- 31 : : /**
- 32 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
- 33 : : */
- 34 : 44 : constructor(address forwarderIrrevocable, bool checkSpender_) MetaTxModuleStandalone(forwarderIrrevocable) {
- 35 : 44 : checkSpender = checkSpender_;
- 36 : : }
- 37 : :
- 38 : : /* ============ View Functions ============ */
- 39 : : /**
- 40 : : * @notice Go through all the whitelist rules to know if a restriction exists on the transfer
- 41 : : * @param from the origin address
- 42 : : * @param to the destination address
- 43 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
- 44 : : *
- 45 : : */
- 46 : 34 : function _detectTransferRestriction(
- 47 : : address from,
- 48 : : address to,
- 49 : : uint256 /* value */
- 50 : : )
- 51 : : internal
- 52 : : view
- 53 : : virtual
- 54 : : override
- 55 : : returns (uint8)
- 56 : : {
- 57 : 34 : address[] memory targetAddress = new address[](2);
- 58 : 34 : targetAddress[0] = from;
- 59 : 34 : targetAddress[1] = to;
- 60 : :
- 61 : 34 : bool[] memory result = _detectTransferRestrictionForTargets(targetAddress);
- 62 [ + + ]: 34 : if (!result[0]) {
- 63 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
- 64 [ + + ]: 21 : } else if (!result[1]) {
- 65 : 8 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
- 66 : : } else {
- 67 : 13 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
- 68 : : }
- 69 : : }
- 70 : :
- 71 : 20 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 72 : : internal
- 73 : : view
- 74 : : virtual
- 75 : : override
- 76 : : returns (uint8)
- 77 : : {
- 78 [ + ]: 20 : if (!checkSpender) {
- 79 : 1 : return _detectTransferRestriction(from, to, value);
- 80 : : }
- 81 : :
- 82 : 19 : address[] memory targetAddress = new address[](3);
- 83 : 19 : targetAddress[0] = from;
- 84 : 19 : targetAddress[1] = to;
- 85 : 19 : targetAddress[2] = spender;
- 86 : :
- 87 : 19 : bool[] memory result = _detectTransferRestrictionForTargets(targetAddress);
- 88 : :
- 89 [ + + ]: 19 : if (!result[0]) {
- 90 : 1 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
- 91 [ + + ]: 18 : } else if (!result[1]) {
- 92 : 1 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
- 93 [ + + ]: 17 : } else if (!result[2]) {
- 94 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- 95 : : } else {
- 96 : 9 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
- 97 : : }
- 98 : : }
- 99 : :
- 100 : : // ERC-7943 tokenId overloads are provided by {RuleNFTAdapter} via RuleWhitelistShared.
- 101 : :
- 102 : 62 : function supportsInterface(bytes4 interfaceId)
- 103 : : public
- 104 : : view
- 105 : : virtual
- 106 : : override(AccessControl, RuleTransferValidation)
- 107 : : returns (bool)
- 108 : : {
- 109 : 62 : return AccessControl.supportsInterface(interfaceId) || RuleTransferValidation.supportsInterface(interfaceId);
- 110 : : }
- 111 : :
- 112 : : /**
- 113 : : * @notice Returns true if the address is listed in at least one child whitelist rule.
- 114 : : * @dev Delegates to the same child-rule scan used by transfer restriction checks.
- 115 : : */
- 116 : 4 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
- 117 : 4 : address[] memory targets = new address[](1);
- 118 : 4 : targets[0] = targetAddress;
- 119 : 4 : bool[] memory result = _detectTransferRestrictionForTargets(targets);
- 120 : 4 : return result[0];
- 121 : : }
- 122 : :
- 123 : : /* ============ Access control ============ */
- 124 : :
- 125 : : /**
- 126 : : * @notice Sets whether the rule should enforce spender-based checks.
- 127 : : * @dev
- 128 : : * - Restricted to holders of the manager role.
- 129 : : * - Updates the internal `checkSpender` flag.
- 130 : : * - Emits a {CheckSpenderUpdated} event.
- 131 : : * @param value The new state of the `checkSpender` flag.
- 132 : : */
- 133 : 4 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
- 134 : 3 : _setCheckSpender(value);
- 135 : 3 : emit CheckSpenderUpdated(value);
- 136 : : }
+ 5 : : /* ==== Abstract contracts === */
+ 6 : : import {MetaTxModuleStandalone, ERC2771Context} from "../../../../modules/MetaTxModuleStandalone.sol";
+ 7 : : import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol";
+ 8 : : import {RuleTransferValidation} from "../core/RuleTransferValidation.sol";
+ 9 : : /* ==== RuleEngine === */
+ 10 : : import {RulesManagementModule} from "RuleEngine/modules/RulesManagementModule.sol";
+ 11 : : /* ==== Interfaces === */
+ 12 : : import {IAddressList} from "../../../interfaces/IAddressList.sol";
+ 13 : : import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.sol";
+ 14 : :
+ 15 : : /**
+ 16 : : * @title Wrapper to call several different whitelist rules (base)
+ 17 : : * @dev Child rules must implement {IAddressList}.
+ 18 : : */
+ 19 : : abstract contract RuleWhitelistWrapperBase is
+ 20 : : RulesManagementModule,
+ 21 : : MetaTxModuleStandalone,
+ 22 : : RuleWhitelistShared,
+ 23 : : IIdentityRegistryVerified
+ 24 : : {
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : CONSTRUCTOR
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : : /**
+ 29 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
+ 30 : : */
+ 31 : 44 : constructor(address forwarderIrrevocable, bool checkSpender_) MetaTxModuleStandalone(forwarderIrrevocable) {
+ 32 : 44 : checkSpender = checkSpender_;
+ 33 : : }
+ 34 : :
+ 35 : : /*//////////////////////////////////////////////////////////////
+ 36 : : ACCESS CONTROL
+ 37 : : //////////////////////////////////////////////////////////////*/
+ 38 : :
+ 39 : 4 : modifier onlyCheckSpenderManager() {
+ 40 : 4 : _authorizeCheckSpenderManager();
+ 41 : : _;
+ 42 : : }
+ 43 : :
+ 44 : 0 : function _authorizeCheckSpenderManager() internal virtual;
+ 45 : :
+ 46 : : /*//////////////////////////////////////////////////////////////
+ 47 : : PUBLIC FUNCTIONS
+ 48 : : //////////////////////////////////////////////////////////////*/
+ 49 : :
+ 50 : : /**
+ 51 : : * @notice Sets whether the rule should enforce spender-based checks.
+ 52 : : * @dev
+ 53 : : * - Restricted to holders of the manager role.
+ 54 : : * - Updates the internal `checkSpender` flag.
+ 55 : : * - Emits a {CheckSpenderUpdated} event.
+ 56 : : * @param value The new state of the `checkSpender` flag.
+ 57 : : */
+ 58 : 4 : function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
+ 59 : 3 : _setCheckSpender(value);
+ 60 : 3 : emit CheckSpenderUpdated(value);
+ 61 : : }
+ 62 : :
+ 63 : 46 : function supportsInterface(bytes4 interfaceId)
+ 64 : : public
+ 65 : : view
+ 66 : : virtual
+ 67 : : override(RuleTransferValidation)
+ 68 : : returns (bool)
+ 69 : : {
+ 70 : 46 : return RuleTransferValidation.supportsInterface(interfaceId);
+ 71 : : }
+ 72 : :
+ 73 : : /**
+ 74 : : * @notice Returns true if the address is listed in at least one child whitelist rule.
+ 75 : : * @dev Delegates to the same child-rule scan used by transfer restriction checks.
+ 76 : : */
+ 77 : 4 : function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
+ 78 : 4 : address[] memory targets = new address[](1);
+ 79 : 4 : targets[0] = targetAddress;
+ 80 : 4 : bool[] memory result = _detectTransferRestrictionForTargets(targets);
+ 81 : 4 : return result[0];
+ 82 : : }
+ 83 : :
+ 84 : : /*//////////////////////////////////////////////////////////////
+ 85 : : INTERNAL FUNCTIONS
+ 86 : : //////////////////////////////////////////////////////////////*/
+ 87 : :
+ 88 : : /**
+ 89 : : * @notice Go through all the whitelist rules to know if a restriction exists on the transfer
+ 90 : : * @param from the origin address
+ 91 : : * @param to the destination address
+ 92 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
+ 93 : : *
+ 94 : : */
+ 95 : 34 : function _detectTransferRestriction(
+ 96 : : address from,
+ 97 : : address to,
+ 98 : : uint256 /* value */
+ 99 : : )
+ 100 : : internal
+ 101 : : view
+ 102 : : virtual
+ 103 : : override
+ 104 : : returns (uint8)
+ 105 : : {
+ 106 : 34 : address[] memory targetAddress = new address[](2);
+ 107 : 34 : targetAddress[0] = from;
+ 108 : 34 : targetAddress[1] = to;
+ 109 : :
+ 110 : 34 : bool[] memory result = _detectTransferRestrictionForTargets(targetAddress);
+ 111 [ + + ]: 34 : if (!result[0]) {
+ 112 : 13 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
+ 113 [ + + ]: 21 : } else if (!result[1]) {
+ 114 : 8 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
+ 115 : : } else {
+ 116 : 13 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 117 : : }
+ 118 : : }
+ 119 : :
+ 120 : 20 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 121 : : internal
+ 122 : : view
+ 123 : : virtual
+ 124 : : override
+ 125 : : returns (uint8)
+ 126 : : {
+ 127 [ + ]: 20 : if (!checkSpender) {
+ 128 : 1 : return _detectTransferRestriction(from, to, value);
+ 129 : : }
+ 130 : :
+ 131 : 19 : address[] memory targetAddress = new address[](3);
+ 132 : 19 : targetAddress[0] = from;
+ 133 : 19 : targetAddress[1] = to;
+ 134 : 19 : targetAddress[2] = spender;
+ 135 : :
+ 136 : 19 : bool[] memory result = _detectTransferRestrictionForTargets(targetAddress);
137 : :
- 138 : 13 : function _transferred(address from, address to, uint256 value)
- 139 : : internal
- 140 : : view
- 141 : : virtual
- 142 : : override(RulesManagementModule, RuleWhitelistShared)
- 143 : : {
- 144 : 13 : RuleWhitelistShared._transferred(from, to, value);
- 145 : : }
- 146 : :
- 147 : 1 : function _transferred(address spender, address from, address to, uint256 value)
- 148 : : internal
- 149 : : view
- 150 : : virtual
- 151 : : override(RulesManagementModule)
- 152 : : {
- 153 : 1 : RuleWhitelistShared._transferredFrom(spender, from, to, value);
- 154 : : }
- 155 : :
- 156 : : /*//////////////////////////////////////////////////////////////
- 157 : : INTERNAL/PRIVATE FUNCTIONS
- 158 : : //////////////////////////////////////////////////////////////*/
+ 138 [ + + ]: 19 : if (!result[0]) {
+ 139 : 1 : return CODE_ADDRESS_FROM_NOT_WHITELISTED;
+ 140 [ + + ]: 18 : } else if (!result[1]) {
+ 141 : 1 : return CODE_ADDRESS_TO_NOT_WHITELISTED;
+ 142 [ + + ]: 17 : } else if (!result[2]) {
+ 143 : 8 : return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 144 : : } else {
+ 145 : 9 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+ 146 : : }
+ 147 : : }
+ 148 : :
+ 149 : : // ERC-7943 tokenId overloads are provided by {RuleNFTAdapter} via RuleWhitelistShared.
+ 150 : :
+ 151 : 13 : function _transferred(address from, address to, uint256 value)
+ 152 : : internal
+ 153 : : view
+ 154 : : virtual
+ 155 : : override(RulesManagementModule, RuleWhitelistShared)
+ 156 : : {
+ 157 : 13 : RuleWhitelistShared._transferred(from, to, value);
+ 158 : : }
159 : :
- 160 : : /**
- 161 : : * @notice Evaluates target addresses across all child rules.
- 162 : : * @param targetAddress Addresses to validate (from/to[/spender]).
- 163 : : * @return result Boolean array aligned with targetAddress indicating if each address is listed.
- 164 : : */
- 165 : 57 : function _detectTransferRestrictionForTargets(address[] memory targetAddress)
- 166 : : internal
- 167 : : view
- 168 : : virtual
- 169 : : returns (bool[] memory)
- 170 : : {
- 171 : 57 : uint256 rulesLength = rulesCount();
- 172 : 57 : bool[] memory result = new bool[](targetAddress.length);
- 173 : 57 : for (uint256 i = 0; i < rulesLength; ++i) {
- 174 : : // Call the whitelist rules
- 175 : : // Gas cost grows with the number of rules. Keep the wrapper list bounded.
- 176 : 105 : bool[] memory isListed = IAddressList(rule(i)).areAddressesListed(targetAddress);
- 177 : 105 : for (uint256 j = 0; j < targetAddress.length; ++j) {
- 178 [ + ]: 85 : if (isListed[j]) {
- 179 : 85 : result[j] = true;
- 180 : : }
- 181 : : }
- 182 : :
- 183 : : // Break early if all listed
- 184 : 105 : bool allListed = true;
- 185 : 105 : for (uint256 k = 0; k < result.length; ++k) {
- 186 [ + ]: 201 : if (!result[k]) {
- 187 : 81 : allListed = false;
- 188 : 81 : break;
+ 160 : 1 : function _transferred(address spender, address from, address to, uint256 value)
+ 161 : : internal
+ 162 : : view
+ 163 : : virtual
+ 164 : : override(RulesManagementModule)
+ 165 : : {
+ 166 : 1 : RuleWhitelistShared._transferredFrom(spender, from, to, value);
+ 167 : : }
+ 168 : :
+ 169 : : /**
+ 170 : : * @notice Evaluates target addresses across all child rules.
+ 171 : : * @param targetAddress Addresses to validate (from/to[/spender]).
+ 172 : : * @return result Boolean array aligned with targetAddress indicating if each address is listed.
+ 173 : : */
+ 174 : 57 : function _detectTransferRestrictionForTargets(address[] memory targetAddress)
+ 175 : : internal
+ 176 : : view
+ 177 : : virtual
+ 178 : : returns (bool[] memory)
+ 179 : : {
+ 180 : 57 : uint256 rulesLength = rulesCount();
+ 181 : 57 : bool[] memory result = new bool[](targetAddress.length);
+ 182 : 57 : for (uint256 i = 0; i < rulesLength; ++i) {
+ 183 : : // Call the whitelist rules
+ 184 : : // Gas cost grows with the number of rules. Keep the wrapper list bounded.
+ 185 : 105 : bool[] memory isListed = IAddressList(rule(i)).areAddressesListed(targetAddress);
+ 186 : 105 : for (uint256 j = 0; j < targetAddress.length; ++j) {
+ 187 [ + ]: 85 : if (isListed[j]) {
+ 188 : 85 : result[j] = true;
189 : : }
190 : : }
- 191 [ + ]: 24 : if (allListed) {
- 192 : 24 : break;
- 193 : : }
- 194 : : }
- 195 : 57 : return result;
- 196 : : }
- 197 : :
- 198 : : /**
- 199 : : * @notice Internal helper to update the `checkSpender` flag.
- 200 : : * @param value New flag value.
- 201 : : */
- 202 : 3 : function _setCheckSpender(bool value) internal virtual {
- 203 : 3 : checkSpender = value;
- 204 : : }
- 205 : :
- 206 : : /*//////////////////////////////////////////////////////////////
- 207 : : ACCESS CONTROL
- 208 : : //////////////////////////////////////////////////////////////*/
- 209 : :
- 210 : 4 : modifier onlyCheckSpenderManager() {
- 211 : 4 : _authorizeCheckSpenderManager();
- 212 : : _;
+ 191 : :
+ 192 : : // Break early if all listed
+ 193 : 105 : bool allListed = true;
+ 194 : 105 : for (uint256 k = 0; k < result.length; ++k) {
+ 195 [ + ]: 201 : if (!result[k]) {
+ 196 : 81 : allListed = false;
+ 197 : 81 : break;
+ 198 : : }
+ 199 : : }
+ 200 [ + ]: 24 : if (allListed) {
+ 201 : 24 : break;
+ 202 : : }
+ 203 : : }
+ 204 : 57 : return result;
+ 205 : : }
+ 206 : :
+ 207 : : /**
+ 208 : : * @notice Internal helper to update the `checkSpender` flag.
+ 209 : : * @param value New flag value.
+ 210 : : */
+ 211 : 3 : function _setCheckSpender(bool value) internal virtual {
+ 212 : 3 : checkSpender = value;
213 : : }
214 : :
- 215 : : function _authorizeCheckSpenderManager() internal virtual;
- 216 : :
- 217 : : /*//////////////////////////////////////////////////////////////
- 218 : : ERC-2771
- 219 : : //////////////////////////////////////////////////////////////*/
- 220 : :
- 221 : : /**
- 222 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
- 223 : : */
- 224 : 145 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
- 225 : 145 : return ERC2771Context._msgSender();
- 226 : : }
- 227 : :
- 228 : : /**
- 229 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
- 230 : : */
- 231 : 2 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
- 232 : 2 : return ERC2771Context._msgData();
- 233 : : }
- 234 : :
- 235 : : /**
- 236 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
- 237 : : */
- 238 : 147 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
- 239 : 147 : return ERC2771Context._contextSuffixLength();
- 240 : : }
- 241 : : }
+ 215 : : /*//////////////////////////////////////////////////////////////
+ 216 : : ERC-2771
+ 217 : : //////////////////////////////////////////////////////////////*/
+ 218 : :
+ 219 : : /**
+ 220 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
+ 221 : : */
+ 222 : 145 : function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
+ 223 : 145 : return ERC2771Context._msgSender();
+ 224 : : }
+ 225 : :
+ 226 : : /**
+ 227 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
+ 228 : : */
+ 229 : 2 : function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
+ 230 : 2 : return ERC2771Context._msgData();
+ 231 : : }
+ 232 : :
+ 233 : : /**
+ 234 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule
+ 235 : : */
+ 236 : 147 : function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
+ 237 : 147 : return ERC2771Context._contextSuffixLength();
+ 238 : : }
+ 239 : : }
@@ -317,7 +315,7 @@
diff --git a/doc/coverage/coverage/abstract/base/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-b.html
similarity index 54%
rename from doc/coverage/coverage/abstract/base/index-sort-b.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-b.html
index 52ef854..f462f1b 100644
--- a/doc/coverage/coverage/abstract/base/index-sort-b.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-b.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base
-
+ LCOV - lcov.info - src/rules/validation/abstract/base
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleSpenderWhitelistBase.sol
-
+
100.0 %
19 / 19
@@ -96,93 +96,93 @@
RuleWhitelistBase.sol
-
+
+ 96.3 %
+ 26 / 27
+ 88.9 %
+ 8 / 9
100.0 %
- 23 / 23
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ 5 / 5
RuleMaxTotalSupplyBase.sol
-
+
- 100.0 %
- 37 / 37
- 100.0 %
- 12 / 12
+ 97.4 %
+ 37 / 38
+ 92.3 %
+ 12 / 13
100.0 %
11 / 11
- RuleBlacklistBase.sol
+ RuleWhitelistWrapperBase.sol
-
+
- 100.0 %
- 33 / 33
- 100.0 %
- 9 / 9
+ 98.5 %
+ 67 / 68
+ 93.3 %
+ 14 / 15
100.0 %
14 / 14
- RuleWhitelistWrapperBase.sol
+ RuleBlacklistBase.sol
-
+
100.0 %
- 67 / 67
+ 33 / 33
100.0 %
- 14 / 14
+ 9 / 9
100.0 %
14 / 14
RuleSanctionsListBase.sol
-
+
- 100.0 %
- 47 / 47
- 100.0 %
- 13 / 13
+ 97.9 %
+ 47 / 48
+ 92.9 %
+ 13 / 14
100.0 %
18 / 18
RuleIdentityRegistryBase.sol
-
+
- 100.0 %
- 51 / 51
- 100.0 %
- 12 / 12
+ 98.1 %
+ 51 / 52
+ 92.3 %
+ 12 / 13
100.0 %
19 / 19
RuleERC2980Base.sol
-
+
+ 96.3 %
+ 105 / 109
+ 89.5 %
+ 34 / 38
100.0 %
- 101 / 101
- 100.0 %
- 33 / 33
- 100.0 %
- 25 / 25
+ 26 / 26
diff --git a/doc/coverage/coverage/abstract/base/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-f.html
similarity index 54%
rename from doc/coverage/coverage/abstract/base/index-sort-f.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-f.html
index 8838841..9f69cd4 100644
--- a/doc/coverage/coverage/abstract/base/index-sort-f.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-f.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base
-
+ LCOV - lcov.info - src/rules/validation/abstract/base
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
@@ -76,113 +76,113 @@
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleSpenderWhitelistBase.sol
-
-
-
- 100.0 %
- 19 / 19
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleWhitelistBase.sol
-
+
+ 96.3 %
+ 26 / 27
+ 88.9 %
+ 8 / 9
100.0 %
- 23 / 23
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ 5 / 5
- RuleBlacklistBase.sol
+ RuleERC2980Base.sol
-
+
+ 96.3 %
+ 105 / 109
+ 89.5 %
+ 34 / 38
100.0 %
- 33 / 33
- 100.0 %
- 9 / 9
- 100.0 %
- 14 / 14
+ 26 / 26
RuleMaxTotalSupplyBase.sol
-
+
- 100.0 %
- 37 / 37
- 100.0 %
- 12 / 12
+ 97.4 %
+ 37 / 38
+ 92.3 %
+ 12 / 13
100.0 %
11 / 11
RuleIdentityRegistryBase.sol
-
+
- 100.0 %
- 51 / 51
- 100.0 %
- 12 / 12
+ 98.1 %
+ 51 / 52
+ 92.3 %
+ 12 / 13
100.0 %
19 / 19
RuleSanctionsListBase.sol
-
+
- 100.0 %
- 47 / 47
- 100.0 %
- 13 / 13
+ 97.9 %
+ 47 / 48
+ 92.9 %
+ 13 / 14
100.0 %
18 / 18
RuleWhitelistWrapperBase.sol
-
+
- 100.0 %
- 67 / 67
- 100.0 %
- 14 / 14
+ 98.5 %
+ 67 / 68
+ 93.3 %
+ 14 / 15
100.0 %
14 / 14
- RuleERC2980Base.sol
+ RuleSpenderWhitelistBase.sol
-
+
100.0 %
- 101 / 101
+ 19 / 19
+ 100.0 %
+ 8 / 8
+ 100.0 %
+ 4 / 4
+
+
+ RuleBlacklistBase.sol
+
+
+
100.0 %
33 / 33
100.0 %
- 25 / 25
+ 9 / 9
+ 100.0 %
+ 14 / 14
diff --git a/doc/coverage/coverage/abstract/base/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-l.html
similarity index 54%
rename from doc/coverage/coverage/abstract/base/index-sort-l.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-l.html
index 30c4f5a..a565721 100644
--- a/doc/coverage/coverage/abstract/base/index-sort-l.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/index-sort-l.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base
-
+ LCOV - lcov.info - src/rules/validation/abstract/base
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
@@ -76,113 +76,113 @@
- Filename
- Line Coverage
- Functions
- Branches
-
-
- RuleSpenderWhitelistBase.sol
-
-
-
- 100.0 %
- 19 / 19
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleWhitelistBase.sol
-
+
+ 96.3 %
+ 26 / 27
+ 88.9 %
+ 8 / 9
100.0 %
- 23 / 23
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ 5 / 5
- RuleBlacklistBase.sol
+ RuleERC2980Base.sol
-
+
+ 96.3 %
+ 105 / 109
+ 89.5 %
+ 34 / 38
100.0 %
- 33 / 33
- 100.0 %
- 9 / 9
- 100.0 %
- 14 / 14
+ 26 / 26
RuleMaxTotalSupplyBase.sol
-
+
- 100.0 %
- 37 / 37
- 100.0 %
- 12 / 12
+ 97.4 %
+ 37 / 38
+ 92.3 %
+ 12 / 13
100.0 %
11 / 11
RuleSanctionsListBase.sol
-
+
- 100.0 %
- 47 / 47
- 100.0 %
- 13 / 13
+ 97.9 %
+ 47 / 48
+ 92.9 %
+ 13 / 14
100.0 %
18 / 18
RuleIdentityRegistryBase.sol
-
+
- 100.0 %
- 51 / 51
- 100.0 %
- 12 / 12
+ 98.1 %
+ 51 / 52
+ 92.3 %
+ 12 / 13
100.0 %
19 / 19
RuleWhitelistWrapperBase.sol
-
+
- 100.0 %
- 67 / 67
- 100.0 %
- 14 / 14
+ 98.5 %
+ 67 / 68
+ 93.3 %
+ 14 / 15
100.0 %
14 / 14
- RuleERC2980Base.sol
+ RuleSpenderWhitelistBase.sol
-
+
100.0 %
- 101 / 101
+ 19 / 19
+ 100.0 %
+ 8 / 8
+ 100.0 %
+ 4 / 4
+
+
+ RuleBlacklistBase.sol
+
+
+
100.0 %
33 / 33
100.0 %
- 25 / 25
+ 9 / 9
+ 100.0 %
+ 14 / 14
diff --git a/doc/coverage/coverage/abstract/base/index.html b/doc/coverage/coverage/src/rules/validation/abstract/base/index.html
similarity index 54%
rename from doc/coverage/coverage/abstract/base/index.html
rename to doc/coverage/coverage/src/rules/validation/abstract/base/index.html
index 85dc2b0..23e1e26 100644
--- a/doc/coverage/coverage/abstract/base/index.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/base/index.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/base
-
+ LCOV - lcov.info - src/rules/validation/abstract/base
+
LCOV - code coverage report
-
+
-
+
@@ -31,34 +31,34 @@
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleBlacklistBase.sol
-
+
100.0 %
33 / 33
@@ -96,55 +96,55 @@
RuleERC2980Base.sol
-
+
+ 96.3 %
+ 105 / 109
+ 89.5 %
+ 34 / 38
100.0 %
- 101 / 101
- 100.0 %
- 33 / 33
- 100.0 %
- 25 / 25
+ 26 / 26
RuleIdentityRegistryBase.sol
-
+
- 100.0 %
- 51 / 51
- 100.0 %
- 12 / 12
+ 98.1 %
+ 51 / 52
+ 92.3 %
+ 12 / 13
100.0 %
19 / 19
RuleMaxTotalSupplyBase.sol
-
+
- 100.0 %
- 37 / 37
- 100.0 %
- 12 / 12
+ 97.4 %
+ 37 / 38
+ 92.3 %
+ 12 / 13
100.0 %
11 / 11
RuleSanctionsListBase.sol
-
+
- 100.0 %
- 47 / 47
- 100.0 %
- 13 / 13
+ 97.9 %
+ 47 / 48
+ 92.9 %
+ 13 / 14
100.0 %
18 / 18
RuleSpenderWhitelistBase.sol
-
+
100.0 %
19 / 19
@@ -156,24 +156,24 @@
RuleWhitelistBase.sol
-
+
+ 96.3 %
+ 26 / 27
+ 88.9 %
+ 8 / 9
100.0 %
- 23 / 23
- 100.0 %
- 8 / 8
- 100.0 %
- 4 / 4
+ 5 / 5
RuleWhitelistWrapperBase.sol
-
+
- 100.0 %
- 67 / 67
- 100.0 %
- 14 / 14
+ 98.5 %
+ 67 / 68
+ 93.3 %
+ 14 / 15
100.0 %
14 / 14
@@ -182,7 +182,7 @@
diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func-sort-c.html
similarity index 59%
rename from doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func-sort-c.html
index 261668b..bdf9e03 100644
--- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleNFTAdapter.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleNFTAdapter.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,58 +53,66 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func.html
similarity index 59%
rename from doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func.html
index b4334cd..e2a7d04 100644
--- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleNFTAdapter.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleNFTAdapter.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,58 +53,66 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.gcov.html
similarity index 85%
rename from doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.gcov.html
index 5934b99..e069990 100644
--- a/doc/coverage/coverage/abstract/core/RuleNFTAdapter.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleNFTAdapter.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleNFTAdapter.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleNFTAdapter.sol
+
LCOV - code coverage report
-
+
-
+
@@ -32,17 +32,17 @@
-
-
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -94,145 +94,154 @@
23 : : bytes4(keccak256("transferred(address,address,uint256,uint256)"));
24 : : bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943_FROM =
25 : : bytes4(keccak256("transferred(address,address,address,uint256,uint256)"));
- 26 : : /**
- 27 : : * @notice Internal hook for post-transfer validation or state updates.
- 28 : : */
- 29 : : function _transferred(address from, address to, uint256 value) internal virtual;
+ 26 : :
+ 27 : : /*//////////////////////////////////////////////////////////////
+ 28 : : PUBLIC FUNCTIONS
+ 29 : : //////////////////////////////////////////////////////////////*/
30 : :
31 : : /**
- 32 : : * @notice Internal hook for post-transfer validation or state updates (spender-aware).
+ 32 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
33 : : */
- 34 : : function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual;
- 35 : :
- 36 : : /**
- 37 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
- 38 : : */
- 39 : 17 : function detectTransferRestriction(
- 40 : : address from,
- 41 : : address to,
- 42 : : uint256,
- 43 : : /* tokenId */
- 44 : : uint256 value
- 45 : : )
- 46 : : public
- 47 : : view
- 48 : : virtual
- 49 : : override(IERC7943NonFungibleComplianceExtend)
- 50 : : returns (uint8)
- 51 : : {
- 52 : 17 : return _detectTransferRestriction(from, to, value);
- 53 : : }
- 54 : :
- 55 : : /**
- 56 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
- 57 : : */
- 58 : 13 : function detectTransferRestrictionFrom(
- 59 : : address spender,
- 60 : : address from,
- 61 : : address to,
- 62 : : uint256,
- 63 : : /* tokenId */
- 64 : : uint256 value
- 65 : : ) public view virtual override(IERC7943NonFungibleComplianceExtend) returns (uint8) {
- 66 : 13 : return _detectTransferRestrictionFrom(spender, from, to, value);
- 67 : : }
- 68 : :
- 69 : : /**
- 70 : : * @inheritdoc IERC7943NonFungibleCompliance
- 71 : : */
- 72 : 15 : function canTransfer(
- 73 : : address from,
- 74 : : address to,
- 75 : : uint256,
- 76 : : /* tokenId */
- 77 : : uint256 amount
- 78 : : )
- 79 : : public
- 80 : : view
- 81 : : override(IERC7943NonFungibleCompliance)
- 82 : : returns (bool)
- 83 : : {
- 84 : 15 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 85 : : }
- 86 : :
- 87 : : /**
- 88 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
- 89 : : */
- 90 : 11 : function canTransferFrom(
- 91 : : address spender,
- 92 : : address from,
- 93 : : address to,
- 94 : : uint256,
- 95 : : /* tokenId */
- 96 : : uint256 value
- 97 : : )
- 98 : : public
- 99 : : view
- 100 : : virtual
- 101 : : override(IERC7943NonFungibleComplianceExtend)
- 102 : : returns (bool)
- 103 : : {
- 104 : 11 : return _detectTransferRestrictionFrom(spender, from, to, value)
- 105 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 106 : : }
- 107 : :
- 108 : : /**
- 109 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
- 110 : : */
- 111 : 14 : function transferred(
- 112 : : address from,
- 113 : : address to,
- 114 : : uint256,
- 115 : : /* tokenId */
- 116 : : uint256 value
- 117 : : )
- 118 : : public
- 119 : : virtual
- 120 : : override(IERC7943NonFungibleComplianceExtend)
- 121 : : {
- 122 : 14 : _transferred(from, to, value);
- 123 : : }
- 124 : :
- 125 : : /**
- 126 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
- 127 : : */
- 128 : 9 : function transferred(
- 129 : : address spender,
- 130 : : address from,
- 131 : : address to,
- 132 : : uint256,
- 133 : : /* tokenId */
- 134 : : uint256 value
- 135 : : )
- 136 : : public
- 137 : : virtual
- 138 : : override(IERC7943NonFungibleComplianceExtend)
- 139 : : {
- 140 : 9 : _transferredFrom(spender, from, to, value);
- 141 : : }
- 142 : :
- 143 : : /**
- 144 : : * @inheritdoc ITransferContext
- 145 : : */
- 146 : 6 : function transferred(MultiTokenTransferContext calldata ctx) external virtual override {
- 147 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) {
- 148 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value);
- 149 : : } else {
- 150 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
- 151 : : }
- 152 : : }
- 153 : :
- 154 : : /**
- 155 : : * @inheritdoc ITransferContext
- 156 : : */
- 157 : 6 : function transferred(FungibleTransferContext calldata ctx) external virtual override {
- 158 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) {
- 159 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value);
- 160 : : } else {
- 161 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
- 162 : : }
- 163 : : }
- 164 : : }
+ 34 : 17 : function detectTransferRestriction(
+ 35 : : address from,
+ 36 : : address to,
+ 37 : : uint256,
+ 38 : : /* tokenId */
+ 39 : : uint256 value
+ 40 : : )
+ 41 : : public
+ 42 : : view
+ 43 : : virtual
+ 44 : : override(IERC7943NonFungibleComplianceExtend)
+ 45 : : returns (uint8)
+ 46 : : {
+ 47 : 17 : return _detectTransferRestriction(from, to, value);
+ 48 : : }
+ 49 : :
+ 50 : : /**
+ 51 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
+ 52 : : */
+ 53 : 13 : function detectTransferRestrictionFrom(
+ 54 : : address spender,
+ 55 : : address from,
+ 56 : : address to,
+ 57 : : uint256,
+ 58 : : /* tokenId */
+ 59 : : uint256 value
+ 60 : : ) public view virtual override(IERC7943NonFungibleComplianceExtend) returns (uint8) {
+ 61 : 13 : return _detectTransferRestrictionFrom(spender, from, to, value);
+ 62 : : }
+ 63 : :
+ 64 : : /**
+ 65 : : * @inheritdoc IERC7943NonFungibleCompliance
+ 66 : : */
+ 67 : 15 : function canTransfer(
+ 68 : : address from,
+ 69 : : address to,
+ 70 : : uint256,
+ 71 : : /* tokenId */
+ 72 : : uint256 amount
+ 73 : : )
+ 74 : : public
+ 75 : : view
+ 76 : : override(IERC7943NonFungibleCompliance)
+ 77 : : returns (bool)
+ 78 : : {
+ 79 : 15 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 80 : : }
+ 81 : :
+ 82 : : /**
+ 83 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
+ 84 : : */
+ 85 : 11 : function canTransferFrom(
+ 86 : : address spender,
+ 87 : : address from,
+ 88 : : address to,
+ 89 : : uint256,
+ 90 : : /* tokenId */
+ 91 : : uint256 value
+ 92 : : )
+ 93 : : public
+ 94 : : view
+ 95 : : virtual
+ 96 : : override(IERC7943NonFungibleComplianceExtend)
+ 97 : : returns (bool)
+ 98 : : {
+ 99 : 11 : return _detectTransferRestrictionFrom(spender, from, to, value)
+ 100 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 101 : : }
+ 102 : :
+ 103 : : /**
+ 104 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
+ 105 : : */
+ 106 : 14 : function transferred(
+ 107 : : address from,
+ 108 : : address to,
+ 109 : : uint256,
+ 110 : : /* tokenId */
+ 111 : : uint256 value
+ 112 : : )
+ 113 : : public
+ 114 : : virtual
+ 115 : : override(IERC7943NonFungibleComplianceExtend)
+ 116 : : {
+ 117 : 14 : _transferred(from, to, value);
+ 118 : : }
+ 119 : :
+ 120 : : /**
+ 121 : : * @inheritdoc IERC7943NonFungibleComplianceExtend
+ 122 : : */
+ 123 : 9 : function transferred(
+ 124 : : address spender,
+ 125 : : address from,
+ 126 : : address to,
+ 127 : : uint256,
+ 128 : : /* tokenId */
+ 129 : : uint256 value
+ 130 : : )
+ 131 : : public
+ 132 : : virtual
+ 133 : : override(IERC7943NonFungibleComplianceExtend)
+ 134 : : {
+ 135 : 9 : _transferredFrom(spender, from, to, value);
+ 136 : : }
+ 137 : :
+ 138 : : /**
+ 139 : : * @inheritdoc ITransferContext
+ 140 : : */
+ 141 : 6 : function transferred(MultiTokenTransferContext calldata ctx) external virtual override {
+ 142 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) {
+ 143 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value);
+ 144 : : } else {
+ 145 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
+ 146 : : }
+ 147 : : }
+ 148 : :
+ 149 : : /**
+ 150 : : * @inheritdoc ITransferContext
+ 151 : : */
+ 152 : 6 : function transferred(FungibleTransferContext calldata ctx) external virtual override {
+ 153 [ + + ]: 6 : if (ctx.sender != address(0) && ctx.sender != ctx.from) {
+ 154 : 3 : _transferredFrom(ctx.sender, ctx.from, ctx.to, ctx.value);
+ 155 : : } else {
+ 156 : 3 : _transferred(ctx.from, ctx.to, ctx.value);
+ 157 : : }
+ 158 : : }
+ 159 : :
+ 160 : : /*//////////////////////////////////////////////////////////////
+ 161 : : INTERNAL FUNCTIONS
+ 162 : : //////////////////////////////////////////////////////////////*/
+ 163 : :
+ 164 : : /**
+ 165 : : * @notice Internal hook for post-transfer validation or state updates.
+ 166 : : */
+ 167 : 0 : function _transferred(address from, address to, uint256 value) internal virtual;
+ 168 : :
+ 169 : : /**
+ 170 : : * @notice Internal hook for post-transfer validation or state updates (spender-aware).
+ 171 : : */
+ 172 : 0 : function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual;
+ 173 : : }
@@ -240,7 +249,7 @@
diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func-sort-c.html
similarity index 53%
rename from doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func-sort-c.html
index ec2abb0..691709b 100644
--- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleTransferValidation.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleTransferValidation.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,46 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func.html
similarity index 53%
rename from doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func.html
index d272ef1..8610b70 100644
--- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleTransferValidation.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleTransferValidation.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,46 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.gcov.html
similarity index 68%
rename from doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.gcov.html
index 7d4c05a..b207db3 100644
--- a/doc/coverage/coverage/abstract/core/RuleTransferValidation.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleTransferValidation.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleTransferValidation.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleTransferValidation.sol
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -75,109 +75,124 @@
4 : :
5 : : /* ==== CMTAT === */
6 : : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
- 7 : : import {IERC3643ComplianceRead} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
+ 7 : : import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
8 : : import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
9 : : /* ==== RuleEngine === */
10 : : import {IRule} from "RuleEngine/interfaces/IRule.sol";
11 : : import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
- 12 : : /* ==== Modules === */
- 13 : : import {VersionModule} from "../../../../modules/VersionModule.sol";
- 14 : :
- 15 : : abstract contract RuleTransferValidation is
- 16 : : VersionModule,
- 17 : : IERC1404Extend,
- 18 : : IERC3643ComplianceRead,
- 19 : : IERC7551Compliance,
- 20 : : IRule
- 21 : : {
- 22 : : /**
- 23 : : * @notice Internal transfer restriction check.
- 24 : : * @param from the origin address
- 25 : : * @param to the destination address
- 26 : : * @param value amount to transfer
- 27 : : * @return restrictionCode The restriction code for this rule.
- 28 : : */
- 29 : : function _detectTransferRestriction(address from, address to, uint256 value)
- 30 : : internal
- 31 : : view
- 32 : : virtual
- 33 : : returns (uint8 restrictionCode);
- 34 : :
- 35 : : /**
- 36 : : * @notice Internal transfer restriction check for spender-initiated transfers.
- 37 : : * @param spender the caller executing the transfer
- 38 : : * @param from the origin address
- 39 : : * @param to the destination address
- 40 : : * @param value amount to transfer
- 41 : : * @return restrictionCode The restriction code for this rule.
- 42 : : */
- 43 : : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 44 : : internal
- 45 : : view
- 46 : : virtual
- 47 : : returns (uint8 restrictionCode);
- 48 : :
- 49 : : /**
- 50 : : * @inheritdoc IERC1404
- 51 : : */
- 52 : 349 : function detectTransferRestriction(address from, address to, uint256 value)
- 53 : : public
- 54 : : view
- 55 : : virtual
- 56 : : override(IERC1404)
- 57 : : returns (uint8)
- 58 : : {
- 59 : 349 : return _detectTransferRestriction(from, to, value);
- 60 : : }
- 61 : :
- 62 : : /**
- 63 : : * @inheritdoc IERC1404Extend
- 64 : : */
- 65 : 38 : function detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- 66 : : public
- 67 : : view
- 68 : : virtual
- 69 : : override(IERC1404Extend)
- 70 : : returns (uint8)
- 71 : : {
- 72 : 38 : return _detectTransferRestrictionFrom(spender, from, to, value);
- 73 : : }
- 74 : :
- 75 : : /**
- 76 : : * @notice Validate a transfer
- 77 : : * @param from the origin address
- 78 : : * @param to the destination address
- 79 : : * @param amount to transfer
- 80 : : * @return isValid => true if the transfer is valid, false otherwise
- 81 : : *
- 82 : : */
- 83 : 21 : function canTransfer(address from, address to, uint256 amount)
- 84 : : public
- 85 : : view
- 86 : : override(IERC3643ComplianceRead)
- 87 : : returns (bool isValid)
- 88 : : {
- 89 : 21 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 90 : : }
- 91 : :
- 92 : : /**
- 93 : : * @inheritdoc IERC7551Compliance
- 94 : : */
- 95 : 14 : function canTransferFrom(address spender, address from, address to, uint256 value)
- 96 : : public
- 97 : : view
- 98 : : virtual
- 99 : : override(IERC7551Compliance)
- 100 : : returns (bool)
- 101 : : {
- 102 : 14 : return _detectTransferRestrictionFrom(spender, from, to, value)
- 103 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- 104 : : }
- 105 : :
- 106 : 196 : function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
- 107 : 196 : return interfaceId == type(IRule).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID;
- 108 : : }
- 109 : : }
+ 12 : : /* ==== CMTAT libraries === */
+ 13 : : import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+ 14 : : import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+ 15 : : /* ==== Modules === */
+ 16 : : import {VersionModule} from "../../../../modules/VersionModule.sol";
+ 17 : :
+ 18 : : abstract contract RuleTransferValidation is
+ 19 : : VersionModule,
+ 20 : : IERC1404Extend,
+ 21 : : IERC3643ComplianceRead,
+ 22 : : IERC7551Compliance,
+ 23 : : IRule
+ 24 : : {
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : PUBLIC FUNCTIONS
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : :
+ 29 : : /**
+ 30 : : * @inheritdoc IERC1404
+ 31 : : */
+ 32 : 351 : function detectTransferRestriction(address from, address to, uint256 value)
+ 33 : : public
+ 34 : : view
+ 35 : : virtual
+ 36 : : override(IERC1404)
+ 37 : : returns (uint8)
+ 38 : : {
+ 39 : 351 : return _detectTransferRestriction(from, to, value);
+ 40 : : }
+ 41 : :
+ 42 : : /**
+ 43 : : * @inheritdoc IERC1404Extend
+ 44 : : */
+ 45 : 38 : function detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 46 : : public
+ 47 : : view
+ 48 : : virtual
+ 49 : : override(IERC1404Extend)
+ 50 : : returns (uint8)
+ 51 : : {
+ 52 : 38 : return _detectTransferRestrictionFrom(spender, from, to, value);
+ 53 : : }
+ 54 : :
+ 55 : : /**
+ 56 : : * @notice Validate a transfer
+ 57 : : * @param from the origin address
+ 58 : : * @param to the destination address
+ 59 : : * @param amount to transfer
+ 60 : : * @return isValid => true if the transfer is valid, false otherwise
+ 61 : : *
+ 62 : : */
+ 63 : 21 : function canTransfer(address from, address to, uint256 amount)
+ 64 : : public
+ 65 : : view
+ 66 : : override(IERC3643ComplianceRead)
+ 67 : : returns (bool isValid)
+ 68 : : {
+ 69 : 21 : return _detectTransferRestriction(from, to, amount) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 70 : : }
+ 71 : :
+ 72 : : /**
+ 73 : : * @inheritdoc IERC7551Compliance
+ 74 : : */
+ 75 : 14 : function canTransferFrom(address spender, address from, address to, uint256 value)
+ 76 : : public
+ 77 : : view
+ 78 : : virtual
+ 79 : : override(IERC7551Compliance)
+ 80 : : returns (bool)
+ 81 : : {
+ 82 : 14 : return _detectTransferRestrictionFrom(spender, from, to, value)
+ 83 : : == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ 84 : : }
+ 85 : :
+ 86 : 198 : function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
+ 87 : 198 : return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ 88 : 197 : || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ 89 : 196 : || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ 90 : 108 : || interfaceId == type(IERC7551Compliance).interfaceId
+ 91 : 108 : || interfaceId == type(IERC3643IComplianceContract).interfaceId;
+ 92 : : }
+ 93 : :
+ 94 : : /*//////////////////////////////////////////////////////////////
+ 95 : : INTERNAL FUNCTIONS
+ 96 : : //////////////////////////////////////////////////////////////*/
+ 97 : :
+ 98 : : /**
+ 99 : : * @notice Internal transfer restriction check.
+ 100 : : * @param from the origin address
+ 101 : : * @param to the destination address
+ 102 : : * @param value amount to transfer
+ 103 : : * @return restrictionCode The restriction code for this rule.
+ 104 : : */
+ 105 : 0 : function _detectTransferRestriction(address from, address to, uint256 value)
+ 106 : : internal
+ 107 : : view
+ 108 : : virtual
+ 109 : : returns (uint8 restrictionCode);
+ 110 : :
+ 111 : : /**
+ 112 : : * @notice Internal transfer restriction check for spender-initiated transfers.
+ 113 : : * @param spender the caller executing the transfer
+ 114 : : * @param from the origin address
+ 115 : : * @param to the destination address
+ 116 : : * @param value amount to transfer
+ 117 : : * @return restrictionCode The restriction code for this rule.
+ 118 : : */
+ 119 : 0 : function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ 120 : : internal
+ 121 : : view
+ 122 : : virtual
+ 123 : : returns (uint8 restrictionCode);
+ 124 : : }
@@ -185,7 +200,7 @@
diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func-sort-c.html
index 90e0227..a63e0a3 100644
--- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleWhitelistShared.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleWhitelistShared.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func.html
index f0a8b05..10d6f20 100644
--- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleWhitelistShared.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleWhitelistShared.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.gcov.html
similarity index 82%
rename from doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.gcov.html
index d899353..e186485 100644
--- a/doc/coverage/coverage/abstract/core/RuleWhitelistShared.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/RuleWhitelistShared.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core/RuleWhitelistShared.sol
-
+ LCOV - lcov.info - src/rules/validation/abstract/core/RuleWhitelistShared.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -93,92 +93,101 @@
22 : : */
23 : : bool public checkSpender;
24 : :
- 25 : : /* ============ View Functions ============ */
- 26 : : /**
- 27 : : * @notice Checks whether a restriction code is recognized by this rule.
- 28 : : * @dev
- 29 : : * Used to verify if a returned restriction code belongs to the whitelist rule.
- 30 : : * @param restrictionCode The restriction code to validate.
- 31 : : * @return isKnown True if the restriction code is recognized by this rule, false otherwise.
- 32 : : */
- 33 : 10 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool isKnown) {
- 34 : 10 : return restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED
- 35 : 5 : || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED
- 36 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- 37 : : }
- 38 : :
- 39 : : /**
- 40 : : * @notice Returns the human-readable message corresponding to a restriction code.
- 41 : : * @dev
- 42 : : * Returns a descriptive text that explains why a transfer was restricted.
- 43 : : * @param restrictionCode The restriction code to decode.
- 44 : : * @return message A human-readable explanation of the restriction.
- 45 : : */
- 46 : 14 : function messageForTransferRestriction(uint8 restrictionCode)
- 47 : : external
- 48 : : pure
- 49 : : override
- 50 : : returns (string memory message)
- 51 : : {
- 52 [ + + ]: 14 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) {
- 53 : 6 : return TEXT_ADDRESS_FROM_NOT_WHITELISTED;
- 54 [ + + ]: 8 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
- 55 : 4 : return TEXT_ADDRESS_TO_NOT_WHITELISTED;
- 56 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) {
- 57 : 2 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED;
- 58 : : } else {
- 59 : 2 : return TEXT_CODE_NOT_FOUND;
- 60 : : }
- 61 : : }
- 62 : :
- 63 : : /* ============ State Functions ============ */
- 64 : :
- 65 : : /**
- 66 : : * @notice ERC-3643 hook called when a transfer occurs.
- 67 : : * @dev
- 68 : : * - Validates that both `from` and `to` addresses are whitelisted.
- 69 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned.
- 70 : : * - Validation only; does not modify state.
- 71 : : * - Should be called during token transfer logic to enforce whitelist compliance.
- 72 : : * @param from The address sending tokens.
- 73 : : * @param to The address receiving tokens.
- 74 : : * @param value The token amount being transferred.
- 75 : : */
- 76 : 19 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- 77 : 19 : _transferred(from, to, value);
- 78 : : }
- 79 : :
- 80 : : /**
- 81 : : * @notice hook called when a delegated transfer occurs (`transferFrom`).
- 82 : : * @dev
- 83 : : * - Validates that `spender`, `from`, and `to` are all whitelisted.
- 84 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned.
- 85 : : * - Validation only; does not modify state.
- 86 : : * @param spender The address performing the transfer on behalf of another.
- 87 : : * @param from The address from which tokens are transferred.
- 88 : : * @param to The recipient address.
- 89 : : * @param value The token amount being transferred.
- 90 : : */
- 91 : 4 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- 92 : 4 : _transferredFrom(spender, from, to, value);
- 93 : : }
- 94 : :
- 95 : 28 : function _transferred(address from, address to, uint256 value) internal view virtual override {
- 96 : 28 : uint8 code = _detectTransferRestriction(from, to, value);
- 97 [ + + ]: 28 : require(
- 98 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
- 99 : : RuleWhitelist_InvalidTransfer(address(this), from, to, value, code)
- 100 : : );
- 101 : : }
- 102 : :
- 103 : 11 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- 104 : 11 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- 105 [ + + ]: 11 : require(
- 106 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
- 107 : : RuleWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code)
- 108 : : );
- 109 : : }
- 110 : : }
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : EXTERNAL FUNCTIONS
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : :
+ 29 : : /**
+ 30 : : * @notice Checks whether a restriction code is recognized by this rule.
+ 31 : : * @dev
+ 32 : : * Used to verify if a returned restriction code belongs to the whitelist rule.
+ 33 : : * @param restrictionCode The restriction code to validate.
+ 34 : : * @return isKnown True if the restriction code is recognized by this rule, false otherwise.
+ 35 : : */
+ 36 : 10 : function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool isKnown) {
+ 37 : 10 : return restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED
+ 38 : 5 : || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED
+ 39 : 2 : || restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 40 : : }
+ 41 : :
+ 42 : : /**
+ 43 : : * @notice Returns the human-readable message corresponding to a restriction code.
+ 44 : : * @dev
+ 45 : : * Returns a descriptive text that explains why a transfer was restricted.
+ 46 : : * @param restrictionCode The restriction code to decode.
+ 47 : : * @return message A human-readable explanation of the restriction.
+ 48 : : */
+ 49 : 14 : function messageForTransferRestriction(uint8 restrictionCode)
+ 50 : : external
+ 51 : : pure
+ 52 : : override
+ 53 : : returns (string memory message)
+ 54 : : {
+ 55 [ + + ]: 14 : if (restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) {
+ 56 : 6 : return TEXT_ADDRESS_FROM_NOT_WHITELISTED;
+ 57 [ + + ]: 8 : } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
+ 58 : 4 : return TEXT_ADDRESS_TO_NOT_WHITELISTED;
+ 59 [ + + ]: 4 : } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) {
+ 60 : 2 : return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED;
+ 61 : : } else {
+ 62 : 2 : return TEXT_CODE_NOT_FOUND;
+ 63 : : }
+ 64 : : }
+ 65 : :
+ 66 : : /*//////////////////////////////////////////////////////////////
+ 67 : : PUBLIC FUNCTIONS
+ 68 : : //////////////////////////////////////////////////////////////*/
+ 69 : :
+ 70 : : /**
+ 71 : : * @notice ERC-3643 hook called when a transfer occurs.
+ 72 : : * @dev
+ 73 : : * - Validates that both `from` and `to` addresses are whitelisted.
+ 74 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned.
+ 75 : : * - Validation only; does not modify state.
+ 76 : : * - Should be called during token transfer logic to enforce whitelist compliance.
+ 77 : : * @param from The address sending tokens.
+ 78 : : * @param to The address receiving tokens.
+ 79 : : * @param value The token amount being transferred.
+ 80 : : */
+ 81 : 19 : function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ 82 : 19 : _transferred(from, to, value);
+ 83 : : }
+ 84 : :
+ 85 : : /**
+ 86 : : * @notice hook called when a delegated transfer occurs (`transferFrom`).
+ 87 : : * @dev
+ 88 : : * - Validates that `spender`, `from`, and `to` are all whitelisted.
+ 89 : : * - Reverts if any restriction code other than `TRANSFER_OK` is returned.
+ 90 : : * - Validation only; does not modify state.
+ 91 : : * @param spender The address performing the transfer on behalf of another.
+ 92 : : * @param from The address from which tokens are transferred.
+ 93 : : * @param to The recipient address.
+ 94 : : * @param value The token amount being transferred.
+ 95 : : */
+ 96 : 4 : function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ 97 : 4 : _transferredFrom(spender, from, to, value);
+ 98 : : }
+ 99 : :
+ 100 : : /*//////////////////////////////////////////////////////////////
+ 101 : : INTERNAL FUNCTIONS
+ 102 : : //////////////////////////////////////////////////////////////*/
+ 103 : :
+ 104 : 28 : function _transferred(address from, address to, uint256 value) internal view virtual override {
+ 105 : 28 : uint8 code = _detectTransferRestriction(from, to, value);
+ 106 [ + + ]: 28 : require(
+ 107 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
+ 108 : : RuleWhitelist_InvalidTransfer(address(this), from, to, value, code)
+ 109 : : );
+ 110 : : }
+ 111 : :
+ 112 : 11 : function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ 113 : 11 : uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ 114 [ + + ]: 11 : require(
+ 115 : : code == uint8(REJECTED_CODE_BASE.TRANSFER_OK),
+ 116 : : RuleWhitelist_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ 117 : : );
+ 118 : : }
+ 119 : : }
@@ -186,7 +195,7 @@
diff --git a/doc/coverage/coverage/abstract/core/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-b.html
similarity index 58%
rename from doc/coverage/coverage/abstract/core/index-sort-b.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-b.html
index e6fef6b..8b5a077 100644
--- a/doc/coverage/coverage/abstract/core/index-sort-b.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-b.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core
-
+ LCOV - lcov.info - src/rules/validation/abstract/core
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,39 +76,39 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleTransferValidation.sol
-
+
- 100.0 %
- 10 / 10
- 100.0 %
- 5 / 5
+ 87.5 %
+ 14 / 16
+ 71.4 %
+ 5 / 7
-
0 / 0
RuleNFTAdapter.sol
-
+
- 100.0 %
- 20 / 20
- 100.0 %
- 8 / 8
+ 90.9 %
+ 20 / 22
+ 80.0 %
+ 8 / 10
100.0 %
4 / 4
RuleWhitelistShared.sol
-
+
100.0 %
22 / 22
@@ -122,7 +122,7 @@
diff --git a/doc/coverage/coverage/abstract/core/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-f.html
similarity index 58%
rename from doc/coverage/coverage/abstract/core/index-sort-f.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-f.html
index 89620b4..38fe74f 100644
--- a/doc/coverage/coverage/abstract/core/index-sort-f.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-f.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core
-
+ LCOV - lcov.info - src/rules/validation/abstract/core
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,53 +76,53 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleTransferValidation.sol
-
+
- 100.0 %
- 10 / 10
- 100.0 %
- 5 / 5
+ 87.5 %
+ 14 / 16
+ 71.4 %
+ 5 / 7
-
0 / 0
- RuleWhitelistShared.sol
+ RuleNFTAdapter.sol
-
+
+ 90.9 %
+ 20 / 22
+ 80.0 %
+ 8 / 10
100.0 %
- 22 / 22
- 100.0 %
- 6 / 6
- 100.0 %
- 10 / 10
+ 4 / 4
- RuleNFTAdapter.sol
+ RuleWhitelistShared.sol
-
+
100.0 %
- 20 / 20
+ 22 / 22
100.0 %
- 8 / 8
+ 6 / 6
100.0 %
- 4 / 4
+ 10 / 10
diff --git a/doc/coverage/coverage/abstract/core/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-l.html
similarity index 58%
rename from doc/coverage/coverage/abstract/core/index-sort-l.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-l.html
index 599a86c..809d81e 100644
--- a/doc/coverage/coverage/abstract/core/index-sort-l.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/index-sort-l.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core
-
+ LCOV - lcov.info - src/rules/validation/abstract/core
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,39 +76,39 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleTransferValidation.sol
-
+
- 100.0 %
- 10 / 10
- 100.0 %
- 5 / 5
+ 87.5 %
+ 14 / 16
+ 71.4 %
+ 5 / 7
-
0 / 0
RuleNFTAdapter.sol
-
+
- 100.0 %
- 20 / 20
- 100.0 %
- 8 / 8
+ 90.9 %
+ 20 / 22
+ 80.0 %
+ 8 / 10
100.0 %
4 / 4
RuleWhitelistShared.sol
-
+
100.0 %
22 / 22
@@ -122,7 +122,7 @@
diff --git a/doc/coverage/coverage/abstract/core/index.html b/doc/coverage/coverage/src/rules/validation/abstract/core/index.html
similarity index 58%
rename from doc/coverage/coverage/abstract/core/index.html
rename to doc/coverage/coverage/src/rules/validation/abstract/core/index.html
index 29a0739..e7fb9a0 100644
--- a/doc/coverage/coverage/abstract/core/index.html
+++ b/doc/coverage/coverage/src/rules/validation/abstract/core/index.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - abstract/core
-
+ LCOV - lcov.info - src/rules/validation/abstract/core
+
LCOV - code coverage report
-
+
-
+
@@ -31,18 +31,18 @@
-
-
-
+
+
+
-
+
-
-
+
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,39 +76,39 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleNFTAdapter.sol
-
+
- 100.0 %
- 20 / 20
- 100.0 %
- 8 / 8
+ 90.9 %
+ 20 / 22
+ 80.0 %
+ 8 / 10
100.0 %
4 / 4
RuleTransferValidation.sol
-
+
- 100.0 %
- 10 / 10
- 100.0 %
- 5 / 5
+ 87.5 %
+ 14 / 16
+ 71.4 %
+ 5 / 7
-
0 / 0
RuleWhitelistShared.sol
-
+
100.0 %
22 / 22
@@ -122,7 +122,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func-sort-c.html
similarity index 68%
rename from doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func-sort-c.html
index 7133758..c9ba010 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func.html
similarity index 68%
rename from doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func.html
index 0e71043..a23d580 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.gcov.html
similarity index 77%
rename from doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.gcov.html
index a674ee2..c42a129 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklist.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklist.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklist.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklist.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -73,8 +73,8 @@
2 : :
3 : : pragma solidity ^0.8.20;
4 : :
- 5 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 5 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
8 : : /* ==== Abstract contracts === */
9 : : import {RuleBlacklistBase} from "../abstract/base/RuleBlacklistBase.sol";
@@ -96,33 +96,45 @@
25 : : AccessControlModuleStandalone(admin)
26 : : {}
27 : :
- 28 : 91 : function supportsInterface(bytes4 interfaceId)
- 29 : : public
- 30 : : view
- 31 : : virtual
- 32 : : override(AccessControlEnumerable, RuleBlacklistBase)
- 33 : : returns (bool)
- 34 : : {
- 35 : 91 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 36 : 61 : || RuleBlacklistBase.supportsInterface(interfaceId);
- 37 : : }
- 38 : :
- 39 : 28 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
- 40 : :
- 41 : 1 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : PUBLIC FUNCTIONS
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : 91 : function supportsInterface(bytes4 interfaceId)
+ 33 : : public
+ 34 : : view
+ 35 : : virtual
+ 36 : : override(AccessControlEnumerable, RuleBlacklistBase)
+ 37 : : returns (bool)
+ 38 : : {
+ 39 : 91 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 40 : 61 : || RuleBlacklistBase.supportsInterface(interfaceId);
+ 41 : : }
42 : :
- 43 : 83 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 44 : 83 : return super._msgSender();
- 45 : : }
+ 43 : : /*//////////////////////////////////////////////////////////////
+ 44 : : ACCESS CONTROL
+ 45 : : //////////////////////////////////////////////////////////////*/
46 : :
- 47 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 48 : 1 : return super._msgData();
- 49 : : }
+ 47 : 28 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ 48 : :
+ 49 : 1 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
50 : :
- 51 : 84 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 52 : 84 : return super._contextSuffixLength();
- 53 : : }
- 54 : : }
+ 51 : : /*//////////////////////////////////////////////////////////////
+ 52 : : INTERNAL FUNCTIONS
+ 53 : : //////////////////////////////////////////////////////////////*/
+ 54 : :
+ 55 : 83 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 56 : 83 : return super._msgSender();
+ 57 : : }
+ 58 : :
+ 59 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 60 : 1 : return super._msgData();
+ 61 : : }
+ 62 : :
+ 63 : 84 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 64 : 84 : return super._contextSuffixLength();
+ 65 : : }
+ 66 : : }
@@ -130,7 +142,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html
index 8d61702..b60d6f1 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func.html
index ad84a28..bc36b87 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.gcov.html
similarity index 69%
rename from doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.gcov.html
index 64af672..c82933f 100644
--- a/doc/coverage/coverage/deployment/RuleBlacklistOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleBlacklistOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,9 +72,9 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {RuleBlacklistBase} from "../abstract/base/RuleBlacklistBase.sol";
8 : : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
9 : :
@@ -83,24 +83,36 @@
12 : : * @notice Ownable2Step variant of RuleBlacklist with owner-based authorization hooks.
13 : : */
14 : : contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step {
- 15 : : constructor(address owner, address forwarderIrrevocable) RuleBlacklistBase(forwarderIrrevocable) Ownable(owner) {}
- 16 : :
- 17 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ 15 : : /*//////////////////////////////////////////////////////////////
+ 16 : : CONSTRUCTOR
+ 17 : : //////////////////////////////////////////////////////////////*/
18 : :
- 19 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ 19 : : constructor(address owner, address forwarderIrrevocable) RuleBlacklistBase(forwarderIrrevocable) Ownable(owner) {}
20 : :
- 21 : 12 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 22 : 12 : return super._msgSender();
- 23 : : }
+ 21 : : /*//////////////////////////////////////////////////////////////
+ 22 : : ACCESS CONTROL
+ 23 : : //////////////////////////////////////////////////////////////*/
24 : :
- 25 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 26 : 1 : return super._msgData();
- 27 : : }
+ 25 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ 26 : :
+ 27 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
28 : :
- 29 : 13 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 30 : 13 : return super._contextSuffixLength();
- 31 : : }
- 32 : : }
+ 29 : : /*//////////////////////////////////////////////////////////////
+ 30 : : INTERNAL FUNCTIONS
+ 31 : : //////////////////////////////////////////////////////////////*/
+ 32 : :
+ 33 : 12 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 34 : 12 : return super._msgSender();
+ 35 : : }
+ 36 : :
+ 37 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 38 : 1 : return super._msgData();
+ 39 : : }
+ 40 : :
+ 41 : 13 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 42 : 13 : return super._contextSuffixLength();
+ 43 : : }
+ 44 : : }
@@ -108,7 +120,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func-sort-c.html
index 0271b40..bb5cee0 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,58 +53,58 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleERC2980.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func.html
index d1fa5b1..fa45b3d 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,58 +53,58 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.gcov.html
similarity index 84%
rename from doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.gcov.html
index 5863a7a..682d2d2 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 5 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 5 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
6 : : /* ==== Abstract contracts === */
7 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
8 : : import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol";
@@ -108,50 +108,55 @@
37 : : /**
38 : : * @param admin Address that receives `DEFAULT_ADMIN_ROLE` (implicitly holds all roles).
39 : : * @param forwarderIrrevocable Address of the ERC-2771 forwarder for meta-transactions.
- 40 : : */
- 41 : : constructor(address admin, address forwarderIrrevocable)
- 42 : : RuleERC2980Base(forwarderIrrevocable)
- 43 : : AccessControlModuleStandalone(admin)
- 44 : : {}
- 45 : :
- 46 : : /*//////////////////////////////////////////////////////////////
- 47 : : INTERFACE SUPPORT
- 48 : : //////////////////////////////////////////////////////////////*/
- 49 : :
- 50 : 1 : function supportsInterface(bytes4 interfaceId)
- 51 : : public
- 52 : : view
- 53 : : virtual
- 54 : : override(AccessControlEnumerable, RuleERC2980Base)
- 55 : : returns (bool)
- 56 : : {
- 57 : 1 : return AccessControlEnumerable.supportsInterface(interfaceId) || RuleERC2980Base.supportsInterface(interfaceId);
- 58 : : }
- 59 : :
- 60 : : /*//////////////////////////////////////////////////////////////
- 61 : : ACCESS CONTROL
- 62 : : //////////////////////////////////////////////////////////////*/
- 63 : :
- 64 : 42 : function _authorizeWhitelistAdd() internal view virtual override onlyRole(WHITELIST_ADD_ROLE) {}
- 65 : :
- 66 : 8 : function _authorizeWhitelistRemove() internal view virtual override onlyRole(WHITELIST_REMOVE_ROLE) {}
- 67 : :
- 68 : 22 : function _authorizeFrozenlistAdd() internal view virtual override onlyRole(FROZENLIST_ADD_ROLE) {}
- 69 : :
- 70 : 7 : function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {}
- 71 : :
- 72 : 237 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
- 73 : 237 : return super._msgSender();
- 74 : : }
- 75 : :
- 76 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) {
- 77 : 1 : return super._msgData();
- 78 : : }
- 79 : :
- 80 : 238 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) {
- 81 : 238 : return super._contextSuffixLength();
- 82 : : }
- 83 : : }
+ 40 : : * @param allowBurn If true, whitelists `address(0)` at deployment to allow burn/redemption flows.
+ 41 : : */
+ 42 : : constructor(address admin, address forwarderIrrevocable, bool allowBurn)
+ 43 : : RuleERC2980Base(forwarderIrrevocable, allowBurn)
+ 44 : : AccessControlModuleStandalone(admin)
+ 45 : : {}
+ 46 : :
+ 47 : : /*//////////////////////////////////////////////////////////////
+ 48 : : PUBLIC FUNCTIONS
+ 49 : : //////////////////////////////////////////////////////////////*/
+ 50 : :
+ 51 : 1 : function supportsInterface(bytes4 interfaceId)
+ 52 : : public
+ 53 : : view
+ 54 : : virtual
+ 55 : : override(AccessControlEnumerable, RuleERC2980Base)
+ 56 : : returns (bool)
+ 57 : : {
+ 58 : 1 : return AccessControlEnumerable.supportsInterface(interfaceId) || RuleERC2980Base.supportsInterface(interfaceId);
+ 59 : : }
+ 60 : :
+ 61 : : /*//////////////////////////////////////////////////////////////
+ 62 : : ACCESS CONTROL
+ 63 : : //////////////////////////////////////////////////////////////*/
+ 64 : :
+ 65 : 44 : function _authorizeWhitelistAdd() internal view virtual override onlyRole(WHITELIST_ADD_ROLE) {}
+ 66 : :
+ 67 : 8 : function _authorizeWhitelistRemove() internal view virtual override onlyRole(WHITELIST_REMOVE_ROLE) {}
+ 68 : :
+ 69 : 22 : function _authorizeFrozenlistAdd() internal view virtual override onlyRole(FROZENLIST_ADD_ROLE) {}
+ 70 : :
+ 71 : 7 : function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {}
+ 72 : :
+ 73 : : /*//////////////////////////////////////////////////////////////
+ 74 : : INTERNAL FUNCTIONS
+ 75 : : //////////////////////////////////////////////////////////////*/
+ 76 : :
+ 77 : 242 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
+ 78 : 242 : return super._msgSender();
+ 79 : : }
+ 80 : :
+ 81 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) {
+ 82 : 1 : return super._msgData();
+ 83 : : }
+ 84 : :
+ 85 : 243 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) {
+ 86 : 243 : return super._contextSuffixLength();
+ 87 : : }
+ 88 : : }
@@ -159,7 +164,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html
index 7c235e2..5d34555 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980Ownable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980Ownable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,54 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func.html
index b329d9c..815c45e 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980Ownable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980Ownable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,54 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.gcov.html
similarity index 64%
rename from doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.gcov.html
index fdb8ffe..a03e0c3 100644
--- a/doc/coverage/coverage/deployment/RuleERC2980Ownable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleERC2980Ownable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleERC2980Ownable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,9 +72,9 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol";
8 : :
9 : : /**
@@ -83,28 +83,48 @@
12 : : * @dev All whitelist and frozenlist management functions are restricted to the contract owner.
13 : : */
14 : : contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step {
- 15 : : constructor(address owner, address forwarderIrrevocable) RuleERC2980Base(forwarderIrrevocable) Ownable(owner) {}
- 16 : :
- 17 : 7 : function _authorizeWhitelistAdd() internal view virtual override onlyOwner {}
+ 15 : : /*//////////////////////////////////////////////////////////////
+ 16 : : CONSTRUCTOR
+ 17 : : //////////////////////////////////////////////////////////////*/
18 : :
- 19 : 3 : function _authorizeWhitelistRemove() internal view virtual override onlyOwner {}
- 20 : :
- 21 : 6 : function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {}
- 22 : :
- 23 : 2 : function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {}
- 24 : :
- 25 : 30 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
- 26 : 30 : return super._msgSender();
- 27 : : }
+ 19 : : /**
+ 20 : : * @param owner Contract owner.
+ 21 : : * @param forwarderIrrevocable Address of the ERC-2771 forwarder for meta-transactions.
+ 22 : : * @param allowBurn If true, whitelists `address(0)` at deployment to allow burn/redemption flows.
+ 23 : : */
+ 24 : : constructor(address owner, address forwarderIrrevocable, bool allowBurn)
+ 25 : : RuleERC2980Base(forwarderIrrevocable, allowBurn)
+ 26 : : Ownable(owner)
+ 27 : : {}
28 : :
- 29 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) {
- 30 : 1 : return super._msgData();
- 31 : : }
+ 29 : : /*//////////////////////////////////////////////////////////////
+ 30 : : ACCESS CONTROL
+ 31 : : //////////////////////////////////////////////////////////////*/
32 : :
- 33 : 31 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) {
- 34 : 31 : return super._contextSuffixLength();
- 35 : : }
- 36 : : }
+ 33 : 7 : function _authorizeWhitelistAdd() internal view virtual override onlyOwner {}
+ 34 : :
+ 35 : 3 : function _authorizeWhitelistRemove() internal view virtual override onlyOwner {}
+ 36 : :
+ 37 : 6 : function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {}
+ 38 : :
+ 39 : 2 : function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {}
+ 40 : :
+ 41 : : /*//////////////////////////////////////////////////////////////
+ 42 : : INTERNAL FUNCTIONS
+ 43 : : //////////////////////////////////////////////////////////////*/
+ 44 : :
+ 45 : 30 : function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
+ 46 : 30 : return super._msgSender();
+ 47 : : }
+ 48 : :
+ 49 : 1 : function _msgData() internal view virtual override(Context, RuleERC2980Base) returns (bytes calldata) {
+ 50 : 1 : return super._msgData();
+ 51 : : }
+ 52 : :
+ 53 : 31 : function _contextSuffixLength() internal view virtual override(Context, RuleERC2980Base) returns (uint256) {
+ 54 : 31 : return super._contextSuffixLength();
+ 55 : : }
+ 56 : : }
@@ -112,7 +132,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func-sort-c.html
index f448ed3..e38abb4 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistry.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistry.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func.html
index 1172c83..e4e938b 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistry.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistry.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.gcov.html
similarity index 76%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.gcov.html
index e499690..43031da 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistry.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistry.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistry.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistry.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,7 +72,7 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
5 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
6 : : import {RuleIdentityRegistryBase} from "../abstract/base/RuleIdentityRegistryBase.sol";
7 : : import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol";
@@ -83,28 +83,36 @@
12 : : * @dev Burns (to == address(0)) are allowed even if the sender is not verified.
13 : : */
14 : : contract RuleIdentityRegistry is AccessControlModuleStandalone, RuleIdentityRegistryBase {
- 15 : : constructor(address admin, address identityRegistry_)
- 16 : : AccessControlModuleStandalone(admin)
- 17 : : RuleIdentityRegistryBase(identityRegistry_)
- 18 : : {}
- 19 : :
- 20 : 15 : function supportsInterface(bytes4 interfaceId)
- 21 : : public
- 22 : : view
- 23 : : virtual
- 24 : : override(AccessControlEnumerable, RuleTransferValidation)
- 25 : : returns (bool)
- 26 : : {
- 27 : 15 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 28 : 10 : || RuleTransferValidation.supportsInterface(interfaceId);
- 29 : : }
- 30 : :
- 31 : : /*//////////////////////////////////////////////////////////////
- 32 : : ACCESS CONTROL
- 33 : : //////////////////////////////////////////////////////////////*/
- 34 : :
- 35 : 5 : function _authorizeIdentityRegistryManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
- 36 : : }
+ 15 : : /*//////////////////////////////////////////////////////////////
+ 16 : : CONSTRUCTOR
+ 17 : : //////////////////////////////////////////////////////////////*/
+ 18 : :
+ 19 : : constructor(address admin, address identityRegistry_)
+ 20 : : AccessControlModuleStandalone(admin)
+ 21 : : RuleIdentityRegistryBase(identityRegistry_)
+ 22 : : {}
+ 23 : :
+ 24 : : /*//////////////////////////////////////////////////////////////
+ 25 : : PUBLIC FUNCTIONS
+ 26 : : //////////////////////////////////////////////////////////////*/
+ 27 : :
+ 28 : 15 : function supportsInterface(bytes4 interfaceId)
+ 29 : : public
+ 30 : : view
+ 31 : : virtual
+ 32 : : override(AccessControlEnumerable, RuleTransferValidation)
+ 33 : : returns (bool)
+ 34 : : {
+ 35 : 15 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 36 : 10 : || RuleTransferValidation.supportsInterface(interfaceId);
+ 37 : : }
+ 38 : :
+ 39 : : /*//////////////////////////////////////////////////////////////
+ 40 : : ACCESS CONTROL
+ 41 : : //////////////////////////////////////////////////////////////*/
+ 42 : :
+ 43 : 5 : function _authorizeIdentityRegistryManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ 44 : : }
@@ -112,7 +120,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html
index f40a018..44bdad9 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistryOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html
index 21fdc8e..32ae128 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistryOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html
similarity index 65%
rename from doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html
index b350cb4..f79424b 100644
--- a/doc/coverage/coverage/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleIdentityRegistryOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
6 : : import {RuleIdentityRegistryBase} from "../abstract/base/RuleIdentityRegistryBase.sol";
7 : :
8 : : /**
@@ -81,10 +81,18 @@
10 : : * @notice Ownable2Step variant of RuleIdentityRegistry.
11 : : */
12 : : contract RuleIdentityRegistryOwnable2Step is RuleIdentityRegistryBase, Ownable2Step {
- 13 : : constructor(address owner, address identityRegistry_) RuleIdentityRegistryBase(identityRegistry_) Ownable(owner) {}
- 14 : :
- 15 : 4 : function _authorizeIdentityRegistryManager() internal view virtual override onlyOwner {}
- 16 : : }
+ 13 : : /*//////////////////////////////////////////////////////////////
+ 14 : : CONSTRUCTOR
+ 15 : : //////////////////////////////////////////////////////////////*/
+ 16 : :
+ 17 : : constructor(address owner, address identityRegistry_) RuleIdentityRegistryBase(identityRegistry_) Ownable(owner) {}
+ 18 : :
+ 19 : : /*//////////////////////////////////////////////////////////////
+ 20 : : ACCESS CONTROL
+ 21 : : //////////////////////////////////////////////////////////////*/
+ 22 : :
+ 23 : 4 : function _authorizeIdentityRegistryManager() internal view virtual override onlyOwner {}
+ 24 : : }
@@ -92,7 +100,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func-sort-c.html
index 571c96e..22fac2c 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupply.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupply.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func.html
index 90f36b1..a16bd35 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupply.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupply.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,34 +53,34 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.gcov.html
similarity index 78%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.gcov.html
index 5196e15..554acc8 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupply.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupply.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupply.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupply.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,7 +72,7 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
5 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
6 : : import {RuleMaxTotalSupplyBase} from "../abstract/base/RuleMaxTotalSupplyBase.sol";
7 : : import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol";
@@ -82,33 +82,41 @@
11 : : * @notice Restricts minting so that total supply never exceeds a maximum value.
12 : : */
13 : : contract RuleMaxTotalSupply is AccessControlModuleStandalone, RuleMaxTotalSupplyBase {
- 14 : : /**
- 15 : : * @param admin Address that receives the default admin role.
- 16 : : * @param tokenContract_ Token contract that exposes totalSupply (must be non-zero).
- 17 : : * @param maxTotalSupply_ Initial maximum supply.
- 18 : : */
- 19 : : constructor(address admin, address tokenContract_, uint256 maxTotalSupply_)
- 20 : : AccessControlModuleStandalone(admin)
- 21 : : RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
- 22 : : {}
- 23 : :
- 24 : 15 : function supportsInterface(bytes4 interfaceId)
- 25 : : public
- 26 : : view
- 27 : : virtual
- 28 : : override(AccessControlEnumerable, RuleTransferValidation)
- 29 : : returns (bool)
- 30 : : {
- 31 : 15 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 32 : 10 : || RuleTransferValidation.supportsInterface(interfaceId);
- 33 : : }
- 34 : :
- 35 : : /*//////////////////////////////////////////////////////////////
- 36 : : ACCESS CONTROL
- 37 : : //////////////////////////////////////////////////////////////*/
- 38 : :
- 39 : 260 : function _authorizeMaxTotalSupplyManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
- 40 : : }
+ 14 : : /*//////////////////////////////////////////////////////////////
+ 15 : : CONSTRUCTOR
+ 16 : : //////////////////////////////////////////////////////////////*/
+ 17 : :
+ 18 : : /**
+ 19 : : * @param admin Address that receives the default admin role.
+ 20 : : * @param tokenContract_ Token contract that exposes totalSupply (must be non-zero).
+ 21 : : * @param maxTotalSupply_ Initial maximum supply.
+ 22 : : */
+ 23 : : constructor(address admin, address tokenContract_, uint256 maxTotalSupply_)
+ 24 : : AccessControlModuleStandalone(admin)
+ 25 : : RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
+ 26 : : {}
+ 27 : :
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : PUBLIC FUNCTIONS
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : 15 : function supportsInterface(bytes4 interfaceId)
+ 33 : : public
+ 34 : : view
+ 35 : : virtual
+ 36 : : override(AccessControlEnumerable, RuleTransferValidation)
+ 37 : : returns (bool)
+ 38 : : {
+ 39 : 15 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 40 : 10 : || RuleTransferValidation.supportsInterface(interfaceId);
+ 41 : : }
+ 42 : :
+ 43 : : /*//////////////////////////////////////////////////////////////
+ 44 : : ACCESS CONTROL
+ 45 : : //////////////////////////////////////////////////////////////*/
+ 46 : :
+ 47 : 260 : function _authorizeMaxTotalSupplyManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ 48 : : }
@@ -116,7 +124,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html
index 8fa5655..40d1ef8 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupplyOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html
index d7388aa..8f80584 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupplyOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,30 +53,30 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html
index bedeb3e..9bef84f 100644
--- a/doc/coverage/coverage/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleMaxTotalSupplyOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
6 : : import {RuleMaxTotalSupplyBase} from "../abstract/base/RuleMaxTotalSupplyBase.sol";
7 : :
8 : : /**
@@ -81,13 +81,21 @@
10 : : * @notice Ownable2Step variant of RuleMaxTotalSupply.
11 : : */
12 : : contract RuleMaxTotalSupplyOwnable2Step is RuleMaxTotalSupplyBase, Ownable2Step {
- 13 : : constructor(address owner, address tokenContract_, uint256 maxTotalSupply_)
- 14 : : RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
- 15 : : Ownable(owner)
- 16 : : {}
- 17 : :
- 18 : 4 : function _authorizeMaxTotalSupplyManager() internal view virtual override onlyOwner {}
- 19 : : }
+ 13 : : /*//////////////////////////////////////////////////////////////
+ 14 : : CONSTRUCTOR
+ 15 : : //////////////////////////////////////////////////////////////*/
+ 16 : :
+ 17 : : constructor(address owner, address tokenContract_, uint256 maxTotalSupply_)
+ 18 : : RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
+ 19 : : Ownable(owner)
+ 20 : : {}
+ 21 : :
+ 22 : : /*//////////////////////////////////////////////////////////////
+ 23 : : ACCESS CONTROL
+ 24 : : //////////////////////////////////////////////////////////////*/
+ 25 : :
+ 26 : 4 : function _authorizeMaxTotalSupplyManager() internal view virtual override onlyOwner {}
+ 27 : : }
@@ -95,7 +103,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func-sort-c.html
index 24e6345..97f8b5e 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsList.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsList.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func.html
index 3312a7b..3bfcb8d 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsList.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsList.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.gcov.html
similarity index 81%
rename from doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.gcov.html
index 3a79c33..c0e638d 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsList.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsList.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsList.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsList.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 5 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 5 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
6 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
7 : : import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol";
8 : : import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol";
@@ -85,48 +85,56 @@
14 : : * @notice Compliance rule enforcing sanctions-screening for token transfers.
15 : : */
16 : : contract RuleSanctionsList is AccessControlModuleStandalone, RuleSanctionsListBase {
- 17 : : /**
- 18 : : * @param admin Address of the contract (Access Control)
- 19 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
- 20 : : */
- 21 : : constructor(address admin, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
- 22 : : AccessControlModuleStandalone(admin)
- 23 : : RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
- 24 : : {}
- 25 : :
- 26 : 58 : function supportsInterface(bytes4 interfaceId)
- 27 : : public
- 28 : : view
- 29 : : virtual
- 30 : : override(AccessControlEnumerable, RuleTransferValidation)
- 31 : : returns (bool)
- 32 : : {
- 33 : 58 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 34 : 39 : || RuleTransferValidation.supportsInterface(interfaceId);
- 35 : : }
- 36 : :
- 37 : : /*//////////////////////////////////////////////////////////////
- 38 : : ACCESS CONTROL
- 39 : : //////////////////////////////////////////////////////////////*/
- 40 : :
- 41 : 17 : function _authorizeSanctionListManager() internal view virtual override onlyRole(SANCTIONLIST_ROLE) {}
- 42 : :
- 43 : : /*//////////////////////////////////////////////////////////////
- 44 : : ERC-2771
- 45 : : //////////////////////////////////////////////////////////////*/
- 46 : :
- 47 : 57 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
- 48 : 57 : return ERC2771Context._msgSender();
- 49 : : }
+ 17 : : /*//////////////////////////////////////////////////////////////
+ 18 : : CONSTRUCTOR
+ 19 : : //////////////////////////////////////////////////////////////*/
+ 20 : :
+ 21 : : /**
+ 22 : : * @param admin Address of the contract (Access Control)
+ 23 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
+ 24 : : */
+ 25 : : constructor(address admin, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
+ 26 : : AccessControlModuleStandalone(admin)
+ 27 : : RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
+ 28 : : {}
+ 29 : :
+ 30 : : /*//////////////////////////////////////////////////////////////
+ 31 : : PUBLIC FUNCTIONS
+ 32 : : //////////////////////////////////////////////////////////////*/
+ 33 : :
+ 34 : 58 : function supportsInterface(bytes4 interfaceId)
+ 35 : : public
+ 36 : : view
+ 37 : : virtual
+ 38 : : override(AccessControlEnumerable, RuleTransferValidation)
+ 39 : : returns (bool)
+ 40 : : {
+ 41 : 58 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 42 : 39 : || RuleTransferValidation.supportsInterface(interfaceId);
+ 43 : : }
+ 44 : :
+ 45 : : /*//////////////////////////////////////////////////////////////
+ 46 : : ACCESS CONTROL
+ 47 : : //////////////////////////////////////////////////////////////*/
+ 48 : :
+ 49 : 17 : function _authorizeSanctionListManager() internal view virtual override onlyRole(SANCTIONLIST_ROLE) {}
50 : :
- 51 : 1 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
- 52 : 1 : return ERC2771Context._msgData();
- 53 : : }
+ 51 : : /*//////////////////////////////////////////////////////////////
+ 52 : : INTERNAL FUNCTIONS
+ 53 : : //////////////////////////////////////////////////////////////*/
54 : :
- 55 : 58 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
- 56 : 58 : return ERC2771Context._contextSuffixLength();
+ 55 : 57 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
+ 56 : 57 : return ERC2771Context._msgSender();
57 : : }
- 58 : : }
+ 58 : :
+ 59 : 1 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
+ 60 : 1 : return ERC2771Context._msgData();
+ 61 : : }
+ 62 : :
+ 63 : 58 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
+ 64 : 58 : return ERC2771Context._contextSuffixLength();
+ 65 : : }
+ 66 : : }
@@ -134,7 +142,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html
index b5c05d7..3da8d95 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsListOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,42 +53,42 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func.html
index 58d44b3..a525d43 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsListOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,42 +53,42 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html
similarity index 70%
rename from doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html
index be60669..9b53258 100644
--- a/doc/coverage/coverage/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSanctionsListOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,9 +72,9 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol";
8 : : import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol";
9 : : import {ISanctionsList} from "../../interfaces/ISanctionsList.sol";
@@ -84,25 +84,37 @@
13 : : * @notice Ownable2Step variant of RuleSanctionsList.
14 : : */
15 : : contract RuleSanctionsListOwnable2Step is RuleSanctionsListBase, Ownable2Step {
- 16 : : constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
- 17 : : RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
- 18 : : Ownable(owner)
- 19 : : {}
- 20 : :
- 21 : 3 : function _authorizeSanctionListManager() internal view virtual override onlyOwner {}
- 22 : :
- 23 : 11 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
- 24 : 11 : return ERC2771Context._msgSender();
- 25 : : }
- 26 : :
- 27 : 1 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
- 28 : 1 : return ERC2771Context._msgData();
- 29 : : }
+ 16 : : /*//////////////////////////////////////////////////////////////
+ 17 : : CONSTRUCTOR
+ 18 : : //////////////////////////////////////////////////////////////*/
+ 19 : :
+ 20 : : constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
+ 21 : : RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
+ 22 : : Ownable(owner)
+ 23 : : {}
+ 24 : :
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : ACCESS CONTROL
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : :
+ 29 : 3 : function _authorizeSanctionListManager() internal view virtual override onlyOwner {}
30 : :
- 31 : 13 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
- 32 : 13 : return ERC2771Context._contextSuffixLength();
- 33 : : }
- 34 : : }
+ 31 : : /*//////////////////////////////////////////////////////////////
+ 32 : : INTERNAL FUNCTIONS
+ 33 : : //////////////////////////////////////////////////////////////*/
+ 34 : :
+ 35 : 11 : function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
+ 36 : 11 : return ERC2771Context._msgSender();
+ 37 : : }
+ 38 : :
+ 39 : 1 : function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
+ 40 : 1 : return ERC2771Context._msgData();
+ 41 : : }
+ 42 : :
+ 43 : 13 : function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
+ 44 : 13 : return ERC2771Context._contextSuffixLength();
+ 45 : : }
+ 46 : : }
@@ -110,7 +122,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func-sort-c.html
index ae631c7..07e51e2 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func.html
index e4dd2af..8028e78 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.gcov.html
similarity index 70%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.gcov.html
index a008bd9..d9dd156 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelist.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelist.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelist.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelist.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 5 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 5 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
6 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
7 : : import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
8 : : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
@@ -84,38 +84,54 @@
13 : : * @notice AccessControlEnumerable deployment variant of spender whitelist rule.
14 : : */
15 : : contract RuleSpenderWhitelist is RuleSpenderWhitelistBase, AccessControlModuleStandalone {
- 16 : : constructor(address admin, address forwarderIrrevocable)
- 17 : : RuleSpenderWhitelistBase(forwarderIrrevocable)
- 18 : : AccessControlModuleStandalone(admin)
- 19 : : {}
- 20 : :
- 21 : 2 : function supportsInterface(bytes4 interfaceId)
- 22 : : public
- 23 : : view
- 24 : : virtual
- 25 : : override(AccessControlEnumerable, RuleTransferValidation)
- 26 : : returns (bool)
- 27 : : {
- 28 : 2 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 29 : 1 : || RuleTransferValidation.supportsInterface(interfaceId);
- 30 : : }
- 31 : :
- 32 : 6 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
- 33 : :
- 34 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
- 35 : :
- 36 : 31 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 37 : 31 : return super._msgSender();
+ 16 : : /*//////////////////////////////////////////////////////////////
+ 17 : : CONSTRUCTOR
+ 18 : : //////////////////////////////////////////////////////////////*/
+ 19 : :
+ 20 : : constructor(address admin, address forwarderIrrevocable)
+ 21 : : RuleSpenderWhitelistBase(forwarderIrrevocable)
+ 22 : : AccessControlModuleStandalone(admin)
+ 23 : : {}
+ 24 : :
+ 25 : : /*//////////////////////////////////////////////////////////////
+ 26 : : PUBLIC FUNCTIONS
+ 27 : : //////////////////////////////////////////////////////////////*/
+ 28 : :
+ 29 : 5 : function supportsInterface(bytes4 interfaceId)
+ 30 : : public
+ 31 : : view
+ 32 : : virtual
+ 33 : : override(AccessControlEnumerable, RuleTransferValidation)
+ 34 : : returns (bool)
+ 35 : : {
+ 36 : 5 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 37 : 4 : || RuleTransferValidation.supportsInterface(interfaceId);
38 : : }
39 : :
- 40 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 41 : 1 : return super._msgData();
- 42 : : }
+ 40 : : /*//////////////////////////////////////////////////////////////
+ 41 : : ACCESS CONTROL
+ 42 : : //////////////////////////////////////////////////////////////*/
43 : :
- 44 : 33 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 45 : 33 : return super._contextSuffixLength();
- 46 : : }
- 47 : : }
+ 44 : 6 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ 45 : :
+ 46 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ 47 : :
+ 48 : : /*//////////////////////////////////////////////////////////////
+ 49 : : INTERNAL FUNCTIONS
+ 50 : : //////////////////////////////////////////////////////////////*/
+ 51 : :
+ 52 : 31 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 53 : 31 : return super._msgSender();
+ 54 : : }
+ 55 : :
+ 56 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 57 : 1 : return super._msgData();
+ 58 : : }
+ 59 : :
+ 60 : 33 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 61 : 33 : return super._contextSuffixLength();
+ 62 : : }
+ 63 : : }
@@ -123,7 +139,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html
similarity index 68%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html
index 3b72524..c10953b 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html
similarity index 68%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html
index 1026412..6d0abf0 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html
similarity index 70%
rename from doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html
index 36b3a78..4e5cbf7 100644
--- a/doc/coverage/coverage/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleSpenderWhitelistOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,9 +72,9 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
8 : : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
9 : :
@@ -83,27 +83,39 @@
12 : : * @notice Ownable2Step deployment variant of spender whitelist rule.
13 : : */
14 : : contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step {
- 15 : : constructor(address owner, address forwarderIrrevocable)
- 16 : : RuleSpenderWhitelistBase(forwarderIrrevocable)
- 17 : : Ownable(owner)
- 18 : : {}
- 19 : :
- 20 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
- 21 : :
- 22 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ 15 : : /*//////////////////////////////////////////////////////////////
+ 16 : : CONSTRUCTOR
+ 17 : : //////////////////////////////////////////////////////////////*/
+ 18 : :
+ 19 : : constructor(address owner, address forwarderIrrevocable)
+ 20 : : RuleSpenderWhitelistBase(forwarderIrrevocable)
+ 21 : : Ownable(owner)
+ 22 : : {}
23 : :
- 24 : 10 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 25 : 10 : return super._msgSender();
- 26 : : }
+ 24 : : /*//////////////////////////////////////////////////////////////
+ 25 : : ACCESS CONTROL
+ 26 : : //////////////////////////////////////////////////////////////*/
27 : :
- 28 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 29 : 1 : return super._msgData();
- 30 : : }
+ 28 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ 29 : :
+ 30 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
31 : :
- 32 : 12 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 33 : 12 : return super._contextSuffixLength();
- 34 : : }
- 35 : : }
+ 32 : : /*//////////////////////////////////////////////////////////////
+ 33 : : INTERNAL FUNCTIONS
+ 34 : : //////////////////////////////////////////////////////////////*/
+ 35 : :
+ 36 : 10 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 37 : 10 : return super._msgSender();
+ 38 : : }
+ 39 : :
+ 40 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 41 : 1 : return super._msgData();
+ 42 : : }
+ 43 : :
+ 44 : 12 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 45 : 12 : return super._contextSuffixLength();
+ 46 : : }
+ 47 : : }
@@ -111,7 +123,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func-sort-c.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func-sort-c.html
index 6422f45..fd55174 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,54 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func.html
similarity index 66%
rename from doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func.html
index dca3a94..db22430 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelist.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelist.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,54 +53,54 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.gcov.html
similarity index 81%
rename from doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.gcov.html
index b6fe556..130ea73 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelist.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelist.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelist.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelist.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,8 +72,8 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 5 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 5 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
6 : : /* ==== Abstract contracts === */
7 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
8 : : import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol";
@@ -96,54 +96,62 @@
25 : : /**
26 : : * @param admin Address of the contract (Access Control)
27 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
- 28 : : */
- 29 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
- 30 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_)
- 31 : : AccessControlModuleStandalone(admin)
- 32 : : {
- 33 : : // no-op
- 34 : : }
- 35 : :
- 36 : : /* ============ View Functions ============ */
+ 28 : : * @param checkSpender_ Enables spender checks for transferFrom when true.
+ 29 : : * @param allowMintBurn Pre-lists `address(0)` at deployment when true.
+ 30 : : */
+ 31 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ 32 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_, allowMintBurn)
+ 33 : : AccessControlModuleStandalone(admin)
+ 34 : : {
+ 35 : : // no-op
+ 36 : : }
37 : :
- 38 : : /**
- 39 : : * @notice Indicates whether this contract supports a given interface.
- 40 : : * @param interfaceId The interface identifier, as specified in ERC-165.
- 41 : : * @return supported True if the interface is supported.
- 42 : : */
- 43 : 40 : function supportsInterface(bytes4 interfaceId)
- 44 : : public
- 45 : : view
- 46 : : virtual
- 47 : : override(AccessControlEnumerable, RuleWhitelistBase)
- 48 : : returns (bool)
- 49 : : {
- 50 : 40 : return AccessControlEnumerable.supportsInterface(interfaceId)
- 51 : 27 : || RuleWhitelistBase.supportsInterface(interfaceId);
- 52 : : }
- 53 : :
- 54 : : /*//////////////////////////////////////////////////////////////
- 55 : : ACCESS CONTROL
- 56 : : //////////////////////////////////////////////////////////////*/
+ 38 : : /*//////////////////////////////////////////////////////////////
+ 39 : : PUBLIC FUNCTIONS
+ 40 : : //////////////////////////////////////////////////////////////*/
+ 41 : :
+ 42 : : /**
+ 43 : : * @notice Indicates whether this contract supports a given interface.
+ 44 : : * @param interfaceId The interface identifier, as specified in ERC-165.
+ 45 : : * @return supported True if the interface is supported.
+ 46 : : */
+ 47 : 40 : function supportsInterface(bytes4 interfaceId)
+ 48 : : public
+ 49 : : view
+ 50 : : virtual
+ 51 : : override(AccessControlEnumerable, RuleWhitelistBase)
+ 52 : : returns (bool)
+ 53 : : {
+ 54 : 40 : return AccessControlEnumerable.supportsInterface(interfaceId)
+ 55 : 27 : || RuleWhitelistBase.supportsInterface(interfaceId);
+ 56 : : }
57 : :
- 58 : 1 : function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
- 59 : :
- 60 : 352 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ 58 : : /*//////////////////////////////////////////////////////////////
+ 59 : : ACCESS CONTROL
+ 60 : : //////////////////////////////////////////////////////////////*/
61 : :
- 62 : 263 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ 62 : 1 : function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
63 : :
- 64 : 778 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 65 : 778 : return super._msgSender();
- 66 : : }
+ 64 : 352 : function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ 65 : :
+ 66 : 263 : function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
67 : :
- 68 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 69 : 1 : return super._msgData();
- 70 : : }
+ 68 : : /*//////////////////////////////////////////////////////////////
+ 69 : : INTERNAL FUNCTIONS
+ 70 : : //////////////////////////////////////////////////////////////*/
71 : :
- 72 : 779 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 73 : 779 : return super._contextSuffixLength();
+ 72 : 780 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 73 : 780 : return super._msgSender();
74 : : }
- 75 : : }
+ 75 : :
+ 76 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 77 : 1 : return super._msgData();
+ 78 : : }
+ 79 : :
+ 80 : 781 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 81 : 781 : return super._contextSuffixLength();
+ 82 : : }
+ 83 : : }
@@ -151,7 +159,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html
index 9117d9c..3de5344 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func.html
index 259fa0e..0abcde6 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,50 +53,50 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.gcov.html
similarity index 65%
rename from doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.gcov.html
index b258205..8d12ab7 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -72,9 +72,9 @@
1 : : // SPDX-License-Identifier: MPL-2.0
2 : : pragma solidity ^0.8.20;
3 : :
- 4 : : import {Ownable} from "OZ/access/Ownable.sol";
- 5 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 6 : : import {Context} from "OZ/utils/Context.sol";
+ 4 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 5 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 6 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
7 : : import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol";
8 : : import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
9 : :
@@ -83,29 +83,47 @@
12 : : * @notice Ownable2Step variant of RuleWhitelist with owner-based authorization hooks.
13 : : */
14 : : contract RuleWhitelistOwnable2Step is RuleWhitelistBase, Ownable2Step {
- 15 : : constructor(address owner, address forwarderIrrevocable, bool checkSpender_)
- 16 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_)
- 17 : : Ownable(owner)
- 18 : : {}
- 19 : :
- 20 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
- 21 : :
- 22 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
- 23 : :
- 24 : 2 : function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
- 25 : :
- 26 : 15 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
- 27 : 15 : return super._msgSender();
- 28 : : }
+ 15 : : /*//////////////////////////////////////////////////////////////
+ 16 : : CONSTRUCTOR
+ 17 : : //////////////////////////////////////////////////////////////*/
+ 18 : :
+ 19 : : /**
+ 20 : : * @param owner Contract owner.
+ 21 : : * @param forwarderIrrevocable Address of the ERC-2771 forwarder.
+ 22 : : * @param checkSpender_ Enables spender checks for transferFrom when true.
+ 23 : : * @param allowMintBurn Pre-lists `address(0)` at deployment when true.
+ 24 : : */
+ 25 : : constructor(address owner, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ 26 : : RuleWhitelistBase(forwarderIrrevocable, checkSpender_, allowMintBurn)
+ 27 : : Ownable(owner)
+ 28 : : {}
29 : :
- 30 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
- 31 : 1 : return super._msgData();
- 32 : : }
+ 30 : : /*//////////////////////////////////////////////////////////////
+ 31 : : ACCESS CONTROL
+ 32 : : //////////////////////////////////////////////////////////////*/
33 : :
- 34 : 16 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
- 35 : 16 : return super._contextSuffixLength();
- 36 : : }
- 37 : : }
+ 34 : 2 : function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ 35 : :
+ 36 : 2 : function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ 37 : :
+ 38 : 2 : function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ 39 : :
+ 40 : : /*//////////////////////////////////////////////////////////////
+ 41 : : INTERNAL FUNCTIONS
+ 42 : : //////////////////////////////////////////////////////////////*/
+ 43 : :
+ 44 : 15 : function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
+ 45 : 15 : return super._msgSender();
+ 46 : : }
+ 47 : :
+ 48 : 1 : function _msgData() internal view virtual override(Context, RuleAddressSet) returns (bytes calldata) {
+ 49 : 1 : return super._msgData();
+ 50 : : }
+ 51 : :
+ 52 : 16 : function _contextSuffixLength() internal view virtual override(Context, RuleAddressSet) returns (uint256) {
+ 53 : 16 : return super._contextSuffixLength();
+ 54 : : }
+ 55 : : }
@@ -113,7 +131,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func-sort-c.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func-sort-c.html
index 5594f68..8b9413d 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapper.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapper.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,62 +53,62 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func.html
similarity index 67%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func.html
index d5cf199..80fbc74 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapper.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapper.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,62 +53,62 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.gcov.html
similarity index 84%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.gcov.html
index a7b062c..94f7837 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapper.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapper.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapper.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapper.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -74,102 +74,107 @@
3 : : pragma solidity ^0.8.20;
4 : :
5 : : /* ==== OpenZeppelin === */
- 6 : : import {AccessControl} from "OZ/access/AccessControl.sol";
- 7 : : import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
- 8 : : import {Context} from "OZ/utils/Context.sol";
- 9 : : /* ==== Abstract contracts === */
- 10 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
- 11 : : import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBase.sol";
- 12 : :
- 13 : : /**
- 14 : : * @title Wrapper to call several different whitelist rules
- 15 : : */
- 16 : : contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleStandalone {
- 17 : : /*//////////////////////////////////////////////////////////////
- 18 : : CONSTRUCTOR
- 19 : : //////////////////////////////////////////////////////////////*/
- 20 : : /**
- 21 : : * @param admin Address of the contract (Access Control)
- 22 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
- 23 : : */
- 24 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
- 25 : : RuleWhitelistWrapperBase(forwarderIrrevocable, checkSpender_)
- 26 : : AccessControlModuleStandalone(admin)
- 27 : : {}
- 28 : :
- 29 : : /* ============ Access control ============ */
- 30 : :
- 31 : : /**
- 32 : : * @dev Returns `true` if `account` has been granted `role`.
- 33 : : */
- 34 : 38 : function hasRole(bytes32 role, address account)
- 35 : : public
- 36 : : view
- 37 : : virtual
- 38 : : override(AccessControl, AccessControlModuleStandalone)
- 39 : : returns (bool)
- 40 : : {
- 41 : 134 : return AccessControlModuleStandalone.hasRole(role, account);
- 42 : : }
- 43 : :
- 44 : 2 : function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
- 45 : :
- 46 : : /**
- 47 : : * @dev Restrict rules management to the dedicated role.
- 48 : : */
- 49 : 90 : function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {}
- 50 : :
- 51 : : /*//////////////////////////////////////////////////////////////
- 52 : : ERC-2771
- 53 : : //////////////////////////////////////////////////////////////*/
- 54 : :
- 55 : 133 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
- 56 : 133 : return RuleWhitelistWrapperBase._msgSender();
- 57 : : }
- 58 : :
- 59 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) {
- 60 : 1 : return RuleWhitelistWrapperBase._msgData();
- 61 : : }
- 62 : :
- 63 : 134 : function _contextSuffixLength()
- 64 : : internal
- 65 : : view
- 66 : : virtual
- 67 : : override(RuleWhitelistWrapperBase, Context)
- 68 : : returns (uint256)
- 69 : : {
- 70 : 134 : return RuleWhitelistWrapperBase._contextSuffixLength();
- 71 : : }
- 72 : :
- 73 : 46 : function supportsInterface(bytes4 interfaceId)
- 74 : : public
- 75 : : view
- 76 : : virtual
- 77 : : override(AccessControlEnumerable, RuleWhitelistWrapperBase)
- 78 : : returns (bool)
- 79 : : {
- 80 : 46 : return RuleWhitelistWrapperBase.supportsInterface(interfaceId)
- 81 : 16 : || AccessControlEnumerable.supportsInterface(interfaceId);
- 82 : : }
- 83 : :
- 84 : 38 : function _grantRole(bytes32 role, address account)
- 85 : : internal
- 86 : : virtual
- 87 : : override(AccessControl, AccessControlEnumerable)
- 88 : : returns (bool)
- 89 : : {
- 90 : 38 : return AccessControlEnumerable._grantRole(role, account);
- 91 : : }
- 92 : :
- 93 : 1 : function _revokeRole(bytes32 role, address account)
- 94 : : internal
- 95 : : virtual
- 96 : : override(AccessControl, AccessControlEnumerable)
- 97 : : returns (bool)
- 98 : : {
- 99 : 1 : return AccessControlEnumerable._revokeRole(role, account);
- 100 : : }
- 101 : : }
+ 6 : : import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+ 7 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
+ 8 : : /* ==== Abstract contracts === */
+ 9 : : import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
+ 10 : : import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBase.sol";
+ 11 : :
+ 12 : : /**
+ 13 : : * @title Wrapper to call several different whitelist rules
+ 14 : : */
+ 15 : : contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleStandalone {
+ 16 : : /*//////////////////////////////////////////////////////////////
+ 17 : : CONSTRUCTOR
+ 18 : : //////////////////////////////////////////////////////////////*/
+ 19 : : /**
+ 20 : : * @param admin Address of the contract (Access Control)
+ 21 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
+ 22 : : */
+ 23 : : constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
+ 24 : : RuleWhitelistWrapperBase(forwarderIrrevocable, checkSpender_)
+ 25 : : AccessControlModuleStandalone(admin)
+ 26 : : {}
+ 27 : :
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : PUBLIC FUNCTIONS
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : : /**
+ 33 : : * @dev Returns `true` if `account` has been granted `role`.
+ 34 : : */
+ 35 : 38 : function hasRole(bytes32 role, address account)
+ 36 : : public
+ 37 : : view
+ 38 : : virtual
+ 39 : : override
+ 40 : : returns (bool)
+ 41 : : {
+ 42 : 134 : return AccessControlModuleStandalone.hasRole(role, account);
+ 43 : : }
+ 44 : :
+ 45 : 46 : function supportsInterface(bytes4 interfaceId)
+ 46 : : public
+ 47 : : view
+ 48 : : virtual
+ 49 : : override(AccessControlEnumerable, RuleWhitelistWrapperBase)
+ 50 : : returns (bool)
+ 51 : : {
+ 52 : 46 : return RuleWhitelistWrapperBase.supportsInterface(interfaceId)
+ 53 : 31 : || AccessControlEnumerable.supportsInterface(interfaceId);
+ 54 : : }
+ 55 : :
+ 56 : : /*//////////////////////////////////////////////////////////////
+ 57 : : ACCESS CONTROL
+ 58 : : //////////////////////////////////////////////////////////////*/
+ 59 : :
+ 60 : 2 : function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ 61 : :
+ 62 : : /**
+ 63 : : * @dev Restrict rules management to the dedicated role.
+ 64 : : */
+ 65 : 90 : function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {}
+ 66 : :
+ 67 : : /*//////////////////////////////////////////////////////////////
+ 68 : : INTERNAL FUNCTIONS
+ 69 : : //////////////////////////////////////////////////////////////*/
+ 70 : :
+ 71 : 133 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
+ 72 : 133 : return RuleWhitelistWrapperBase._msgSender();
+ 73 : : }
+ 74 : :
+ 75 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) {
+ 76 : 1 : return RuleWhitelistWrapperBase._msgData();
+ 77 : : }
+ 78 : :
+ 79 : 134 : function _contextSuffixLength()
+ 80 : : internal
+ 81 : : view
+ 82 : : virtual
+ 83 : : override(RuleWhitelistWrapperBase, Context)
+ 84 : : returns (uint256)
+ 85 : : {
+ 86 : 134 : return RuleWhitelistWrapperBase._contextSuffixLength();
+ 87 : : }
+ 88 : :
+ 89 : 38 : function _grantRole(bytes32 role, address account)
+ 90 : : internal
+ 91 : : virtual
+ 92 : : override
+ 93 : : returns (bool)
+ 94 : : {
+ 95 : 38 : return AccessControlEnumerable._grantRole(role, account);
+ 96 : : }
+ 97 : :
+ 98 : 1 : function _revokeRole(bytes32 role, address account)
+ 99 : : internal
+ 100 : : virtual
+ 101 : : override
+ 102 : : returns (bool)
+ 103 : : {
+ 104 : 1 : return AccessControlEnumerable._revokeRole(role, account);
+ 105 : : }
+ 106 : : }
@@ -177,7 +182,7 @@
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html
similarity index 69%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html
index a882b98..c89b317 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func-sort-c.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapperOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html
similarity index 69%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html
index 8a05ca5..b09287f 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.func.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapperOwnable2Step.sol - functions
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol - functions
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,46 +53,46 @@
-
+
-
+
diff --git a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html
similarity index 83%
rename from doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html
rename to doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html
index 9fad630..726dff2 100644
--- a/doc/coverage/coverage/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol.gcov.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment/RuleWhitelistWrapperOwnable2Step.sol
-
+ LCOV - lcov.info - src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -74,9 +74,9 @@
3 : : pragma solidity ^0.8.20;
4 : :
5 : : /* ==== OpenZeppelin === */
- 6 : : import {Ownable} from "OZ/access/Ownable.sol";
- 7 : : import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
- 8 : : import {Context} from "OZ/utils/Context.sol";
+ 6 : : import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+ 7 : : import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+ 8 : : import {Context} from "@openzeppelin/contracts/utils/Context.sol";
9 : : /* ==== Abstract contracts === */
10 : : import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBase.sol";
11 : :
@@ -96,35 +96,39 @@
25 : : Ownable(owner)
26 : : {}
27 : :
- 28 : 2 : function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
- 29 : :
- 30 : : /**
- 31 : : * @dev Restrict rules management to the owner.
- 32 : : */
- 33 : 2 : function _onlyRulesManager() internal view virtual override onlyOwner {}
- 34 : :
- 35 : : /*//////////////////////////////////////////////////////////////
- 36 : : ERC-2771
- 37 : : //////////////////////////////////////////////////////////////*/
+ 28 : : /*//////////////////////////////////////////////////////////////
+ 29 : : ACCESS CONTROL
+ 30 : : //////////////////////////////////////////////////////////////*/
+ 31 : :
+ 32 : 2 : function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ 33 : :
+ 34 : : /**
+ 35 : : * @dev Restrict rules management to the owner.
+ 36 : : */
+ 37 : 2 : function _onlyRulesManager() internal view virtual override onlyOwner {}
38 : :
- 39 : 12 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
- 40 : 12 : return RuleWhitelistWrapperBase._msgSender();
- 41 : : }
+ 39 : : /*//////////////////////////////////////////////////////////////
+ 40 : : INTERNAL FUNCTIONS
+ 41 : : //////////////////////////////////////////////////////////////*/
42 : :
- 43 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) {
- 44 : 1 : return RuleWhitelistWrapperBase._msgData();
+ 43 : 12 : function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
+ 44 : 12 : return RuleWhitelistWrapperBase._msgSender();
45 : : }
46 : :
- 47 : 13 : function _contextSuffixLength()
- 48 : : internal
- 49 : : view
- 50 : : virtual
- 51 : : override(RuleWhitelistWrapperBase, Context)
- 52 : : returns (uint256)
- 53 : : {
- 54 : 13 : return RuleWhitelistWrapperBase._contextSuffixLength();
- 55 : : }
- 56 : : }
+ 47 : 1 : function _msgData() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (bytes calldata) {
+ 48 : 1 : return RuleWhitelistWrapperBase._msgData();
+ 49 : : }
+ 50 : :
+ 51 : 13 : function _contextSuffixLength()
+ 52 : : internal
+ 53 : : view
+ 54 : : virtual
+ 55 : : override(RuleWhitelistWrapperBase, Context)
+ 56 : : returns (uint256)
+ 57 : : {
+ 58 : 13 : return RuleWhitelistWrapperBase._contextSuffixLength();
+ 59 : : }
+ 60 : : }
@@ -132,7 +136,7 @@
diff --git a/doc/coverage/coverage/deployment/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-b.html
similarity index 77%
rename from doc/coverage/coverage/deployment/index-sort-b.html
rename to doc/coverage/coverage/src/rules/validation/deployment/index-sort-b.html
index 746722a..e57f953 100644
--- a/doc/coverage/coverage/deployment/index-sort-b.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-b.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment
-
+ LCOV - lcov.info - src/rules/validation/deployment
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,135 +76,135 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
- RuleWhitelistOwnable2Step.sol
+ RuleMaxTotalSupply.sol
-
+
100.0 %
- 9 / 9
+ 4 / 4
100.0 %
- 6 / 6
+ 2 / 2
-
0 / 0
- RuleMaxTotalSupplyOwnable2Step.sol
+ RuleSpenderWhitelistOwnable2Step.sol
-
+
100.0 %
- 1 / 1
+ 8 / 8
100.0 %
- 1 / 1
+ 5 / 5
-
0 / 0
- RuleIdentityRegistryOwnable2Step.sol
+ RuleERC2980Ownable2Step.sol
-
+
100.0 %
- 1 / 1
+ 10 / 10
100.0 %
- 1 / 1
+ 7 / 7
-
0 / 0
- RuleIdentityRegistry.sol
+ RuleWhitelistOwnable2Step.sol
-
+
100.0 %
- 4 / 4
+ 9 / 9
100.0 %
- 2 / 2
+ 6 / 6
-
0 / 0
- RuleWhitelistWrapperOwnable2Step.sol
+ RuleBlacklist.sol
-
+
100.0 %
- 8 / 8
+ 11 / 11
100.0 %
- 5 / 5
+ 6 / 6
-
0 / 0
- RuleSanctionsList.sol
+ RuleWhitelist.sol
-
+
100.0 %
- 10 / 10
+ 12 / 12
100.0 %
- 5 / 5
+ 7 / 7
-
0 / 0
- RuleERC2980.sol
+ RuleSanctionsList.sol
-
+
100.0 %
- 12 / 12
+ 10 / 10
100.0 %
- 8 / 8
+ 5 / 5
-
0 / 0
- RuleMaxTotalSupply.sol
+ RuleSpenderWhitelist.sol
-
+
100.0 %
- 4 / 4
+ 11 / 11
100.0 %
- 2 / 2
+ 6 / 6
-
0 / 0
- RuleWhitelist.sol
+ RuleIdentityRegistry.sol
-
+
100.0 %
- 12 / 12
+ 4 / 4
100.0 %
- 7 / 7
+ 2 / 2
-
0 / 0
- RuleWhitelistWrapper.sol
+ RuleSanctionsListOwnable2Step.sol
-
+
100.0 %
- 17 / 17
+ 7 / 7
100.0 %
- 9 / 9
+ 4 / 4
-
0 / 0
- RuleSpenderWhitelistOwnable2Step.sol
+ RuleBlacklistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -214,62 +214,62 @@
0 / 0
- RuleSanctionsListOwnable2Step.sol
+ RuleWhitelistWrapper.sol
-
+
100.0 %
- 7 / 7
+ 17 / 17
100.0 %
- 4 / 4
+ 9 / 9
-
0 / 0
- RuleSpenderWhitelist.sol
+ RuleERC2980.sol
-
+
100.0 %
- 11 / 11
+ 12 / 12
100.0 %
- 6 / 6
+ 8 / 8
-
0 / 0
- RuleBlacklistOwnable2Step.sol
+ RuleMaxTotalSupplyOwnable2Step.sol
-
+
100.0 %
- 8 / 8
+ 1 / 1
100.0 %
- 5 / 5
+ 1 / 1
-
0 / 0
- RuleERC2980Ownable2Step.sol
+ RuleIdentityRegistryOwnable2Step.sol
-
+
100.0 %
- 10 / 10
+ 1 / 1
100.0 %
- 7 / 7
+ 1 / 1
-
0 / 0
- RuleBlacklist.sol
+ RuleWhitelistWrapperOwnable2Step.sol
-
+
100.0 %
- 11 / 11
+ 8 / 8
100.0 %
- 6 / 6
+ 5 / 5
-
0 / 0
@@ -278,7 +278,7 @@
diff --git a/doc/coverage/coverage/deployment/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-f.html
similarity index 77%
rename from doc/coverage/coverage/deployment/index-sort-f.html
rename to doc/coverage/coverage/src/rules/validation/deployment/index-sort-f.html
index 966a0a0..a62cbc5 100644
--- a/doc/coverage/coverage/deployment/index-sort-f.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-f.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment
-
+ LCOV - lcov.info - src/rules/validation/deployment
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleMaxTotalSupplyOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -96,7 +96,7 @@
RuleIdentityRegistryOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -106,9 +106,9 @@
0 / 0
- RuleIdentityRegistry.sol
+ RuleMaxTotalSupply.sol
-
+
100.0 %
4 / 4
@@ -118,9 +118,9 @@
0 / 0
- RuleMaxTotalSupply.sol
+ RuleIdentityRegistry.sol
-
+
100.0 %
4 / 4
@@ -132,7 +132,7 @@
RuleSanctionsListOwnable2Step.sol
-
+
100.0 %
7 / 7
@@ -142,9 +142,9 @@
0 / 0
- RuleWhitelistWrapperOwnable2Step.sol
+ RuleSpenderWhitelistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -156,7 +156,7 @@
RuleSanctionsList.sol
-
+
100.0 %
10 / 10
@@ -166,9 +166,9 @@
0 / 0
- RuleSpenderWhitelistOwnable2Step.sol
+ RuleBlacklistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -178,9 +178,9 @@
0 / 0
- RuleBlacklistOwnable2Step.sol
+ RuleWhitelistWrapperOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -192,7 +192,7 @@
RuleWhitelistOwnable2Step.sol
-
+
100.0 %
9 / 9
@@ -202,9 +202,9 @@
0 / 0
- RuleSpenderWhitelist.sol
+ RuleBlacklist.sol
-
+
100.0 %
11 / 11
@@ -214,9 +214,9 @@
0 / 0
- RuleBlacklist.sol
+ RuleSpenderWhitelist.sol
-
+
100.0 %
11 / 11
@@ -226,24 +226,24 @@
0 / 0
- RuleWhitelist.sol
+ RuleERC2980Ownable2Step.sol
-
+
100.0 %
- 12 / 12
+ 10 / 10
100.0 %
7 / 7
-
0 / 0
- RuleERC2980Ownable2Step.sol
+ RuleWhitelist.sol
-
+
100.0 %
- 10 / 10
+ 12 / 12
100.0 %
7 / 7
-
@@ -252,7 +252,7 @@
RuleERC2980.sol
-
+
100.0 %
12 / 12
@@ -264,7 +264,7 @@
RuleWhitelistWrapper.sol
-
+
100.0 %
17 / 17
@@ -278,7 +278,7 @@
diff --git a/doc/coverage/coverage/deployment/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-l.html
similarity index 77%
rename from doc/coverage/coverage/deployment/index-sort-l.html
rename to doc/coverage/coverage/src/rules/validation/deployment/index-sort-l.html
index af7dd25..a65138a 100644
--- a/doc/coverage/coverage/deployment/index-sort-l.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/index-sort-l.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment
-
+ LCOV - lcov.info - src/rules/validation/deployment
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleMaxTotalSupplyOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -96,7 +96,7 @@
RuleIdentityRegistryOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -106,9 +106,9 @@
0 / 0
- RuleIdentityRegistry.sol
+ RuleMaxTotalSupply.sol
-
+
100.0 %
4 / 4
@@ -118,9 +118,9 @@
0 / 0
- RuleMaxTotalSupply.sol
+ RuleIdentityRegistry.sol
-
+
100.0 %
4 / 4
@@ -132,7 +132,7 @@
RuleSanctionsListOwnable2Step.sol
-
+
100.0 %
7 / 7
@@ -142,9 +142,9 @@
0 / 0
- RuleWhitelistWrapperOwnable2Step.sol
+ RuleSpenderWhitelistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -154,9 +154,9 @@
0 / 0
- RuleSpenderWhitelistOwnable2Step.sol
+ RuleBlacklistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -166,9 +166,9 @@
0 / 0
- RuleBlacklistOwnable2Step.sol
+ RuleWhitelistWrapperOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -180,7 +180,7 @@
RuleWhitelistOwnable2Step.sol
-
+
100.0 %
9 / 9
@@ -190,33 +190,33 @@
0 / 0
- RuleSanctionsList.sol
+ RuleERC2980Ownable2Step.sol
-
+
100.0 %
10 / 10
100.0 %
- 5 / 5
+ 7 / 7
-
0 / 0
- RuleERC2980Ownable2Step.sol
+ RuleSanctionsList.sol
-
+
100.0 %
10 / 10
100.0 %
- 7 / 7
+ 5 / 5
-
0 / 0
- RuleSpenderWhitelist.sol
+ RuleBlacklist.sol
-
+
100.0 %
11 / 11
@@ -226,9 +226,9 @@
0 / 0
- RuleBlacklist.sol
+ RuleSpenderWhitelist.sol
-
+
100.0 %
11 / 11
@@ -238,33 +238,33 @@
0 / 0
- RuleERC2980.sol
+ RuleWhitelist.sol
-
+
100.0 %
12 / 12
100.0 %
- 8 / 8
+ 7 / 7
-
0 / 0
- RuleWhitelist.sol
+ RuleERC2980.sol
-
+
100.0 %
12 / 12
100.0 %
- 7 / 7
+ 8 / 8
-
0 / 0
RuleWhitelistWrapper.sol
-
+
100.0 %
17 / 17
@@ -278,7 +278,7 @@
diff --git a/doc/coverage/coverage/deployment/index.html b/doc/coverage/coverage/src/rules/validation/deployment/index.html
similarity index 77%
rename from doc/coverage/coverage/deployment/index.html
rename to doc/coverage/coverage/src/rules/validation/deployment/index.html
index 6516ec5..4a56d2b 100644
--- a/doc/coverage/coverage/deployment/index.html
+++ b/doc/coverage/coverage/src/rules/validation/deployment/index.html
@@ -4,22 +4,22 @@
- LCOV - lcov.info - deployment
-
+ LCOV - lcov.info - src/rules/validation/deployment
+
LCOV - code coverage report
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -53,12 +53,12 @@
-
+
-
+
@@ -76,15 +76,15 @@
- Filename
- Line Coverage
- Functions
- Branches
+ Filename
+ Line Coverage
+ Functions
+ Branches
RuleBlacklist.sol
-
+
100.0 %
11 / 11
@@ -96,7 +96,7 @@
RuleBlacklistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -108,7 +108,7 @@
RuleERC2980.sol
-
+
100.0 %
12 / 12
@@ -120,7 +120,7 @@
RuleERC2980Ownable2Step.sol
-
+
100.0 %
10 / 10
@@ -132,7 +132,7 @@
RuleIdentityRegistry.sol
-
+
100.0 %
4 / 4
@@ -144,7 +144,7 @@
RuleIdentityRegistryOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -156,7 +156,7 @@
RuleMaxTotalSupply.sol
-
+
100.0 %
4 / 4
@@ -168,7 +168,7 @@
RuleMaxTotalSupplyOwnable2Step.sol
-
+
100.0 %
1 / 1
@@ -180,7 +180,7 @@
RuleSanctionsList.sol
-
+
100.0 %
10 / 10
@@ -192,7 +192,7 @@
RuleSanctionsListOwnable2Step.sol
-
+
100.0 %
7 / 7
@@ -204,7 +204,7 @@
RuleSpenderWhitelist.sol
-
+
100.0 %
11 / 11
@@ -216,7 +216,7 @@
RuleSpenderWhitelistOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -228,7 +228,7 @@
RuleWhitelist.sol
-
+
100.0 %
12 / 12
@@ -240,7 +240,7 @@
RuleWhitelistOwnable2Step.sol
-
+
100.0 %
9 / 9
@@ -252,7 +252,7 @@
RuleWhitelistWrapper.sol
-
+
100.0 %
17 / 17
@@ -264,7 +264,7 @@
RuleWhitelistWrapperOwnable2Step.sol
-
+
100.0 %
8 / 8
@@ -278,7 +278,7 @@
diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info
index 65fb8e6..41f4b88 100644
--- a/doc/coverage/lcov.info
+++ b/doc/coverage/lcov.info
@@ -1,20 +1,20 @@
TN:
SF:src/modules/AccessControlModuleStandalone.sol
-DA:24,421
-FN:24,AccessControlModuleStandalone.constructor
-FNDA:421,AccessControlModuleStandalone.constructor
-DA:25,421
-BRDA:25,0,0,6
-BRDA:25,0,1,415
-DA:29,415
-DA:38,531
-FN:38,AccessControlModuleStandalone.hasRole
-FNDA:531,AccessControlModuleStandalone.hasRole
-DA:47,3534
-BRDA:47,1,0,3021
-BRDA:47,1,1,513
-DA:48,3021
-DA:50,513
+DA:27,430
+FN:27,AccessControlModuleStandalone.constructor
+FNDA:430,AccessControlModuleStandalone.constructor
+DA:28,430
+BRDA:28,0,0,6
+BRDA:28,0,1,424
+DA:32,424
+DA:42,540
+FN:42,AccessControlModuleStandalone.hasRole
+FNDA:540,AccessControlModuleStandalone.hasRole
+DA:51,3627
+BRDA:51,1,0,3104
+BRDA:51,1,1,523
+DA:52,3104
+DA:54,523
FNF:2
FNH:2
LF:7
@@ -24,10 +24,10 @@ BRH:4
end_of_record
TN:
SF:src/modules/VersionModule.sol
-DA:14,7
-FN:14,VersionModule.version
+DA:18,7
+FN:18,VersionModule.version
FNDA:7,VersionModule.version
-DA:15,7
+DA:19,7
FNF:1
FNH:1
LF:2
@@ -37,252 +37,286 @@ BRH:0
end_of_record
TN:
SF:src/rules/operation/RuleConditionalTransferLight.sol
-DA:27,18
-FN:27,RuleConditionalTransferLight.supportsInterface
-FNDA:18,RuleConditionalTransferLight.supportsInterface
-DA:34,18
-DA:35,11
-DA:38,1
-FN:38,RuleConditionalTransferLight.created
-FNDA:1,RuleConditionalTransferLight.created
-DA:39,1
-DA:42,1
-FN:42,RuleConditionalTransferLight.destroyed
-FNDA:1,RuleConditionalTransferLight.destroyed
-DA:43,1
-DA:46,1848
-FN:46,RuleConditionalTransferLight._authorizeTransferApproval
-FNDA:1848,RuleConditionalTransferLight._authorizeTransferApproval
-DA:48,770
-FN:48,RuleConditionalTransferLight._authorizeTransferExecution
-FNDA:770,RuleConditionalTransferLight._authorizeTransferExecution
-DA:49,770
-BRDA:49,0,0,1
-BRDA:49,0,1,769
-DA:52,19
-FN:52,RuleConditionalTransferLight._onlyComplianceManager
-FNDA:19,RuleConditionalTransferLight._onlyComplianceManager
-FNF:6
-FNH:6
-LF:11
-LH:11
-BRF:2
-BRH:2
+DA:33,21
+FN:33,RuleConditionalTransferLight.supportsInterface
+FNDA:21,RuleConditionalTransferLight.supportsInterface
+DA:40,21
+DA:41,20
+DA:42,19
+DA:43,13
+DA:44,12
+DA:45,11
+DA:52,1924
+FN:52,RuleConditionalTransferLight._authorizeTransferApproval
+FNDA:1924,RuleConditionalTransferLight._authorizeTransferApproval
+DA:54,25
+FN:54,RuleConditionalTransferLight._onlyComplianceManager
+FNDA:25,RuleConditionalTransferLight._onlyComplianceManager
+FNF:3
+FNH:3
+LF:9
+LH:9
+BRF:0
+BRH:0
end_of_record
TN:
SF:src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
-DA:18,4
-FN:18,RuleConditionalTransferLightOwnable2Step.supportsInterface
-FNDA:4,RuleConditionalTransferLightOwnable2Step.supportsInterface
-DA:19,4
-DA:20,2
-DA:23,4
-FN:23,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval
+DA:29,7
+FN:29,RuleConditionalTransferLightOwnable2Step.supportsInterface
+FNDA:7,RuleConditionalTransferLightOwnable2Step.supportsInterface
+DA:30,7
+DA:31,6
+DA:32,5
+DA:33,4
+DA:34,3
+DA:35,2
+DA:42,4
+FN:42,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval
FNDA:4,RuleConditionalTransferLightOwnable2Step._authorizeTransferApproval
-DA:25,3
-FN:25,RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution
-FNDA:3,RuleConditionalTransferLightOwnable2Step._authorizeTransferExecution
+DA:44,3
+FN:44,RuleConditionalTransferLightOwnable2Step._onlyComplianceManager
+FNDA:3,RuleConditionalTransferLightOwnable2Step._onlyComplianceManager
FNF:3
FNH:3
-LF:5
-LH:5
+LF:9
+LH:9
BRF:0
BRH:0
end_of_record
TN:
-SF:src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
-DA:27,1841
-FN:27,RuleConditionalTransferLightBase.approveTransfer
-FNDA:1841,RuleConditionalTransferLightBase.approveTransfer
-DA:28,1842
-DA:29,1842
-DA:30,1842
-DA:33,4
-FN:33,RuleConditionalTransferLightBase.cancelTransferApproval
-FNDA:4,RuleConditionalTransferLightBase.cancelTransferApproval
-DA:34,3
-DA:35,3
-DA:36,3
-BRDA:36,0,0,1
-BRDA:36,0,1,2
-DA:37,2
-DA:38,2
-DA:47,4
-FN:47,RuleConditionalTransferLightBase.approveAndTransferIfAllowed
-FNDA:4,RuleConditionalTransferLightBase.approveAndTransferIfAllowed
+SF:src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol
+DA:20,4
+FN:20,RuleConditionalTransferLightApprovalBase.onlyTransferApprover
+FNDA:4,RuleConditionalTransferLightApprovalBase.onlyTransferApprover
+DA:21,4
+DA:25,3
+FN:25,RuleConditionalTransferLightApprovalBase.onlyTransferExecutor
+FNDA:3,RuleConditionalTransferLightApprovalBase.onlyTransferExecutor
+DA:26,3
+DA:30,0
+FN:30,RuleConditionalTransferLightApprovalBase._authorizeTransferApproval
+FNDA:0,RuleConditionalTransferLightApprovalBase._authorizeTransferApproval
+DA:32,0
+FN:32,RuleConditionalTransferLightApprovalBase._authorizeTransferExecution
+FNDA:0,RuleConditionalTransferLightApprovalBase._authorizeTransferExecution
+DA:38,3
+FN:38,RuleConditionalTransferLightApprovalBase.transferred
+FNDA:3,RuleConditionalTransferLightApprovalBase.transferred
+DA:39,3
+DA:46,1917
+FN:46,RuleConditionalTransferLightApprovalBase.approveTransfer
+FNDA:1917,RuleConditionalTransferLightApprovalBase.approveTransfer
+DA:47,1918
+DA:48,1918
+DA:49,1918
DA:52,4
-BRDA:52,1,0,1
-BRDA:52,1,1,3
+FN:52,RuleConditionalTransferLightApprovalBase.cancelTransferApproval
+FNDA:4,RuleConditionalTransferLightApprovalBase.cancelTransferApproval
+DA:53,3
DA:54,3
-DA:56,3
-DA:57,3
-BRDA:57,2,0,1
-BRDA:57,2,1,2
-DA:59,2
-DA:60,2
-BRDA:60,3,0,1
-BRDA:60,3,1,1
-DA:61,1
-DA:64,263
-FN:64,RuleConditionalTransferLightBase.approvedCount
-FNDA:263,RuleConditionalTransferLightBase.approvedCount
-DA:65,263
-DA:66,263
-DA:69,769
-FN:69,RuleConditionalTransferLightBase.transferred.0
-FNDA:769,RuleConditionalTransferLightBase.transferred.0
-DA:74,767
-DA:77,1
-FN:77,RuleConditionalTransferLightBase.transferred.1
+DA:55,3
+BRDA:55,0,0,1
+BRDA:55,0,1,2
+DA:56,2
+DA:57,2
+DA:60,263
+FN:60,RuleConditionalTransferLightApprovalBase.approvedCount
+FNDA:263,RuleConditionalTransferLightApprovalBase.approvedCount
+DA:61,263
+DA:62,263
+DA:69,3
+FN:69,RuleConditionalTransferLightApprovalBase._transferredFromContext
+FNDA:3,RuleConditionalTransferLightApprovalBase._transferredFromContext
+DA:70,3
+DA:73,850
+FN:73,RuleConditionalTransferLightApprovalBase._transferred
+FNDA:850,RuleConditionalTransferLightApprovalBase._transferred
+DA:74,850
+BRDA:74,1,0,850
+DA:75,850
+DA:77,846
+DA:78,846
+DA:80,846
+BRDA:80,2,0,3
+BRDA:80,2,1,843
+DA:82,843
+DA:83,843
+DA:86,3039
+FN:86,RuleConditionalTransferLightApprovalBase._transferHash
+FNDA:3039,RuleConditionalTransferLightApprovalBase._transferHash
+DA:89,3039
+DA:90,3039
+DA:91,3039
+DA:92,3039
+DA:93,3039
+FNF:11
+FNH:9
+LF:37
+LH:35
+BRF:5
+BRH:5
+end_of_record
+TN:
+SF:src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
+DA:32,1
+FN:32,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode
+FNDA:1,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode
+DA:33,1
+DA:36,2
+FN:36,RuleConditionalTransferLightBase.messageForTransferRestriction
+FNDA:2,RuleConditionalTransferLightBase.messageForTransferRestriction
+DA:42,2
+BRDA:42,0,0,1
+DA:43,1
+DA:45,1
+DA:48,1
+FN:48,RuleConditionalTransferLightBase.created
+FNDA:1,RuleConditionalTransferLightBase.created
+DA:49,1
+DA:52,1
+FN:52,RuleConditionalTransferLightBase.destroyed
+FNDA:1,RuleConditionalTransferLightBase.destroyed
+DA:53,1
+DA:66,4
+FN:66,RuleConditionalTransferLightBase.approveAndTransferIfAllowed
+FNDA:4,RuleConditionalTransferLightBase.approveAndTransferIfAllowed
+DA:71,4
+DA:72,4
+BRDA:72,1,0,1
+BRDA:72,1,1,3
+DA:74,3
+DA:76,3
+DA:77,3
+BRDA:77,2,0,1
+BRDA:77,2,1,2
+DA:79,2
+DA:80,1
+DA:83,846
+FN:83,RuleConditionalTransferLightBase.transferred.0
+FNDA:846,RuleConditionalTransferLightBase.transferred.0
+DA:88,844
+DA:91,1
+FN:91,RuleConditionalTransferLightBase.transferred.1
FNDA:1,RuleConditionalTransferLightBase.transferred.1
-DA:88,1
-DA:91,7
-FN:91,RuleConditionalTransferLightBase.detectTransferRestriction
+DA:102,1
+DA:114,27
+FN:114,RuleConditionalTransferLightBase.bindToken
+FNDA:27,RuleConditionalTransferLightBase.bindToken
+DA:115,26
+BRDA:115,3,0,1
+BRDA:115,3,1,25
+DA:116,25
+DA:119,7
+FN:119,RuleConditionalTransferLightBase.detectTransferRestriction
FNDA:7,RuleConditionalTransferLightBase.detectTransferRestriction
-DA:97,13
-BRDA:97,4,0,4
-DA:98,4
-DA:100,9
-DA:101,9
-BRDA:101,5,0,6
-DA:102,6
-DA:104,3
-DA:107,1
-FN:107,RuleConditionalTransferLightBase.detectTransferRestrictionFrom
+DA:125,13
+BRDA:125,4,0,4
+DA:126,4
+DA:128,9
+DA:129,9
+BRDA:129,5,0,6
+DA:130,6
+DA:132,3
+DA:135,1
+FN:135,RuleConditionalTransferLightBase.detectTransferRestrictionFrom
FNDA:1,RuleConditionalTransferLightBase.detectTransferRestrictionFrom
-DA:119,2
-DA:122,4
-FN:122,RuleConditionalTransferLightBase.canTransfer
+DA:147,2
+DA:150,4
+FN:150,RuleConditionalTransferLightBase.canTransfer
FNDA:4,RuleConditionalTransferLightBase.canTransfer
-DA:128,4
-DA:131,1
-FN:131,RuleConditionalTransferLightBase.canTransferFrom
+DA:156,4
+DA:159,1
+FN:159,RuleConditionalTransferLightBase.canTransferFrom
FNDA:1,RuleConditionalTransferLightBase.canTransferFrom
-DA:137,1
-DA:141,1
-FN:141,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode
-FNDA:1,RuleConditionalTransferLightBase.canReturnTransferRestrictionCode
-DA:142,1
-DA:145,2
-FN:145,RuleConditionalTransferLightBase.messageForTransferRestriction
-FNDA:2,RuleConditionalTransferLightBase.messageForTransferRestriction
-DA:151,2
-BRDA:151,6,0,1
-DA:152,1
-DA:154,1
-DA:157,3
-FN:157,RuleConditionalTransferLightBase.transferred.2
-FNDA:3,RuleConditionalTransferLightBase.transferred.2
-DA:158,3
-DA:161,3
-FN:161,RuleConditionalTransferLightBase._transferredFromContext
-FNDA:3,RuleConditionalTransferLightBase._transferredFromContext
-DA:162,3
-DA:165,773
-FN:165,RuleConditionalTransferLightBase._transferred
-FNDA:773,RuleConditionalTransferLightBase._transferred
-DA:166,773
-BRDA:166,7,0,773
-DA:167,773
-DA:169,768
-DA:170,768
-DA:172,768
-BRDA:172,8,0,3
-BRDA:172,8,1,765
-DA:174,765
-DA:175,765
-DA:178,2885
-FN:178,RuleConditionalTransferLightBase._transferHash
-FNDA:2885,RuleConditionalTransferLightBase._transferHash
-DA:181,2885
-DA:182,2885
-DA:183,2885
-DA:184,2885
-DA:185,2885
-DA:193,4
-FN:193,RuleConditionalTransferLightBase.onlyTransferApprover
-FNDA:4,RuleConditionalTransferLightBase.onlyTransferApprover
-DA:194,4
-DA:198,3
-FN:198,RuleConditionalTransferLightBase.onlyTransferExecutor
-FNDA:3,RuleConditionalTransferLightBase.onlyTransferExecutor
-DA:199,3
-FNF:18
-FNH:18
-LF:66
-LH:66
-BRF:14
-BRH:14
+DA:165,1
+DA:173,850
+FN:173,RuleConditionalTransferLightBase._authorizeTransferExecution
+FNDA:850,RuleConditionalTransferLightBase._authorizeTransferExecution
+DA:174,850
+BRDA:174,6,0,2
+BRDA:174,6,1,848
+FNF:13
+FNH:13
+LF:40
+LH:40
+BRF:11
+BRH:11
end_of_record
TN:
SF:src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol
-DA:51,275
-FN:51,RuleAddressSet.addAddresses
+DA:40,275
+FN:40,RuleAddressSet.onlyAddressListAdd
+FNDA:275,RuleAddressSet.onlyAddressListAdd
+DA:41,275
+DA:45,12
+FN:45,RuleAddressSet.onlyAddressListRemove
+FNDA:12,RuleAddressSet.onlyAddressListRemove
+DA:46,12
+DA:50,0
+FN:50,RuleAddressSet._authorizeAddressListAdd
+FNDA:0,RuleAddressSet._authorizeAddressListAdd
+DA:52,0
+FN:52,RuleAddressSet._authorizeAddressListRemove
+FNDA:0,RuleAddressSet._authorizeAddressListRemove
+DA:65,275
+FN:65,RuleAddressSet.addAddresses
FNDA:275,RuleAddressSet.addAddresses
-DA:52,274
-DA:53,274
-DA:63,260
-FN:63,RuleAddressSet.removeAddresses
+DA:66,274
+DA:67,274
+DA:77,260
+FN:77,RuleAddressSet.removeAddresses
FNDA:260,RuleAddressSet.removeAddresses
-DA:64,259
-DA:65,259
-DA:75,117
-FN:75,RuleAddressSet.addAddress
+DA:78,259
+DA:79,259
+DA:89,117
+FN:89,RuleAddressSet.addAddress
FNDA:117,RuleAddressSet.addAddress
-DA:76,112
-BRDA:76,0,0,1
-BRDA:76,0,1,111
-DA:77,111
-DA:78,111
-DA:88,12
-FN:88,RuleAddressSet.removeAddress
+DA:90,112
+BRDA:90,0,0,1
+BRDA:90,0,1,111
+DA:91,111
+DA:92,111
+DA:102,12
+FN:102,RuleAddressSet.removeAddress
FNDA:12,RuleAddressSet.removeAddress
-DA:89,7
-BRDA:89,1,0,1
-BRDA:89,1,1,6
-DA:90,6
-DA:91,6
-DA:98,275
-FN:98,RuleAddressSet.onlyAddressListAdd
-FNDA:275,RuleAddressSet.onlyAddressListAdd
-DA:99,275
-DA:103,12
-FN:103,RuleAddressSet.onlyAddressListRemove
-FNDA:12,RuleAddressSet.onlyAddressListRemove
-DA:104,12
-DA:116,536
-FN:116,RuleAddressSet.listedAddressCount
+DA:103,7
+BRDA:103,1,0,1
+BRDA:103,1,1,6
+DA:104,6
+DA:105,6
+DA:112,536
+FN:112,RuleAddressSet.listedAddressCount
FNDA:536,RuleAddressSet.listedAddressCount
-DA:117,536
-DA:125,2
-FN:125,RuleAddressSet.contains
+DA:113,536
+DA:121,2
+FN:121,RuleAddressSet.contains
FNDA:2,RuleAddressSet.contains
-DA:126,2
-DA:134,71
-FN:134,RuleAddressSet.isAddressListed
-FNDA:71,RuleAddressSet.isAddressListed
-DA:135,391
-DA:143,108
-FN:143,RuleAddressSet.areAddressesListed
+DA:122,2
+DA:130,73
+FN:130,RuleAddressSet.isAddressListed
+FNDA:73,RuleAddressSet.isAddressListed
+DA:131,393
+DA:139,108
+FN:139,RuleAddressSet.areAddressesListed
FNDA:108,RuleAddressSet.areAddressesListed
-DA:144,108
-DA:145,108
-DA:146,244
-DA:155,929
-FN:155,RuleAddressSet._msgSender
-FNDA:929,RuleAddressSet._msgSender
-DA:156,929
-DA:160,6
-FN:160,RuleAddressSet._msgData
+DA:140,108
+DA:141,108
+DA:142,244
+DA:151,931
+FN:151,RuleAddressSet._msgSender
+FNDA:931,RuleAddressSet._msgSender
+DA:152,931
+DA:156,6
+FN:156,RuleAddressSet._msgData
FNDA:6,RuleAddressSet._msgData
-DA:161,6
-DA:165,937
-FN:165,RuleAddressSet._contextSuffixLength
-FNDA:937,RuleAddressSet._contextSuffixLength
-DA:166,937
-FNF:13
+DA:157,6
+DA:161,939
+FN:161,RuleAddressSet._contextSuffixLength
+FNDA:939,RuleAddressSet._contextSuffixLength
+DA:162,939
+FNF:15
FNH:13
-LF:34
+LF:36
LH:34
BRF:4
BRH:4
@@ -307,10 +341,10 @@ BRDA:62,1,0,518
BRDA:62,1,1,257
DA:63,518
DA:65,257
-DA:74,111
+DA:74,113
FN:74,RuleAddressSetInternal._addAddress
-FNDA:111,RuleAddressSetInternal._addAddress
-DA:75,111
+FNDA:113,RuleAddressSetInternal._addAddress
+DA:75,113
DA:82,6
FN:82,RuleAddressSetInternal._removeAddress
FNDA:6,RuleAddressSetInternal._removeAddress
@@ -319,10 +353,10 @@ DA:90,536
FN:90,RuleAddressSetInternal._listedAddressCount
FNDA:536,RuleAddressSetInternal._listedAddressCount
DA:91,536
-DA:99,771
+DA:99,773
FN:99,RuleAddressSetInternal._isAddressListed
-FNDA:771,RuleAddressSetInternal._isAddressListed
-DA:100,771
+FNDA:773,RuleAddressSetInternal._isAddressListed
+DA:100,773
FNF:6
FNH:6
LF:18
@@ -350,18 +384,18 @@ BRDA:51,1,0,2
BRDA:51,1,1,1
DA:52,2
DA:54,1
-DA:59,39
+DA:59,43
FN:59,RuleERC2980Internal._addWhitelistAddress
-FNDA:39,RuleERC2980Internal._addWhitelistAddress
-DA:60,39
+FNDA:43,RuleERC2980Internal._addWhitelistAddress
+DA:60,43
DA:63,4
FN:63,RuleERC2980Internal._removeWhitelistAddress
FNDA:4,RuleERC2980Internal._removeWhitelistAddress
DA:64,4
-DA:67,82
+DA:67,89
FN:67,RuleERC2980Internal._isWhitelisted
-FNDA:82,RuleERC2980Internal._isWhitelisted
-DA:68,82
+FNDA:89,RuleERC2980Internal._isWhitelisted
+DA:68,89
DA:71,5
FN:71,RuleERC2980Internal._whitelistCount
FNDA:5,RuleERC2980Internal._whitelistCount
@@ -392,10 +426,10 @@ DA:109,4
FN:109,RuleERC2980Internal._removeFrozenlistAddress
FNDA:4,RuleERC2980Internal._removeFrozenlistAddress
DA:110,4
-DA:113,90
+DA:113,94
FN:113,RuleERC2980Internal._isFrozen
-FNDA:90,RuleERC2980Internal._isFrozen
-DA:114,90
+FNDA:94,RuleERC2980Internal._isFrozen
+DA:114,94
DA:117,4
FN:117,RuleERC2980Internal._frozenlistCount
FNDA:4,RuleERC2980Internal._frozenlistCount
@@ -409,71 +443,71 @@ BRH:8
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleBlacklistBase.sol
-DA:20,106
-FN:20,RuleBlacklistBase._detectTransferRestriction
-FNDA:106,RuleBlacklistBase._detectTransferRestriction
-DA:30,106
-BRDA:30,0,0,23
-BRDA:30,0,1,64
-DA:31,23
-DA:32,83
-BRDA:32,1,0,19
-DA:33,19
-DA:35,64
-DA:38,22
-FN:38,RuleBlacklistBase._detectTransferRestrictionFrom
-FNDA:22,RuleBlacklistBase._detectTransferRestrictionFrom
-DA:44,22
-BRDA:44,2,0,8
-DA:45,8
-DA:47,14
-DA:50,4
-FN:50,RuleBlacklistBase.canReturnTransferRestrictionCode
+DA:32,58
+FN:32,RuleBlacklistBase.transferred.0
+FNDA:58,RuleBlacklistBase.transferred.0
+DA:38,58
+DA:45,2
+FN:45,RuleBlacklistBase.transferred.1
+FNDA:2,RuleBlacklistBase.transferred.1
+DA:51,2
+DA:54,4
+FN:54,RuleBlacklistBase.canReturnTransferRestrictionCode
FNDA:4,RuleBlacklistBase.canReturnTransferRestrictionCode
-DA:57,4
-DA:58,1
-DA:61,12
-FN:61,RuleBlacklistBase.messageForTransferRestriction
+DA:61,4
+DA:62,1
+DA:65,12
+FN:65,RuleBlacklistBase.messageForTransferRestriction
FNDA:12,RuleBlacklistBase.messageForTransferRestriction
-DA:68,12
-BRDA:68,3,0,5
-BRDA:68,3,1,3
-DA:69,5
-DA:70,7
-BRDA:70,4,0,3
-BRDA:70,4,1,3
-DA:71,3
-DA:72,4
-BRDA:72,5,0,1
-BRDA:72,5,1,3
-DA:73,1
+DA:72,12
+BRDA:72,0,0,5
+BRDA:72,0,1,3
+DA:73,5
+DA:74,7
+BRDA:74,1,0,3
+BRDA:74,1,1,3
DA:75,3
-DA:79,61
-FN:79,RuleBlacklistBase.supportsInterface
+DA:76,4
+BRDA:76,2,0,1
+BRDA:76,2,1,3
+DA:77,1
+DA:79,3
+DA:83,61
+FN:83,RuleBlacklistBase.supportsInterface
FNDA:61,RuleBlacklistBase.supportsInterface
-DA:80,61
-DA:87,58
-FN:87,RuleBlacklistBase.transferred.0
-FNDA:58,RuleBlacklistBase.transferred.0
-DA:93,58
-DA:100,2
-FN:100,RuleBlacklistBase.transferred.1
-FNDA:2,RuleBlacklistBase.transferred.1
-DA:106,2
-DA:109,61
-FN:109,RuleBlacklistBase._transferred
+DA:84,61
+DA:91,106
+FN:91,RuleBlacklistBase._detectTransferRestriction
+FNDA:106,RuleBlacklistBase._detectTransferRestriction
+DA:101,106
+BRDA:101,3,0,23
+BRDA:101,3,1,64
+DA:102,23
+DA:103,83
+BRDA:103,4,0,19
+DA:104,19
+DA:106,64
+DA:109,22
+FN:109,RuleBlacklistBase._detectTransferRestrictionFrom
+FNDA:22,RuleBlacklistBase._detectTransferRestrictionFrom
+DA:115,22
+BRDA:115,5,0,8
+DA:116,8
+DA:118,14
+DA:121,61
+FN:121,RuleBlacklistBase._transferred
FNDA:61,RuleBlacklistBase._transferred
-DA:110,61
-DA:111,61
-BRDA:111,6,0,15
-BRDA:111,6,1,46
-DA:117,4
-FN:117,RuleBlacklistBase._transferredFrom
+DA:122,61
+DA:123,61
+BRDA:123,6,0,15
+BRDA:123,6,1,46
+DA:129,4
+FN:129,RuleBlacklistBase._transferredFrom
FNDA:4,RuleBlacklistBase._transferredFrom
-DA:118,4
-DA:119,4
-BRDA:119,7,0,2
-BRDA:119,7,1,2
+DA:130,4
+DA:131,4
+BRDA:131,7,0,2
+BRDA:131,7,1,2
FNF:9
FNH:9
LF:33
@@ -483,530 +517,558 @@ BRH:14
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleERC2980Base.sol
-DA:47,22
-FN:47,RuleERC2980Base._detectTransferRestriction
-FNDA:22,RuleERC2980Base._detectTransferRestriction
-DA:59,22
-BRDA:59,0,0,4
-BRDA:59,0,1,14
-DA:60,4
-DA:61,18
-BRDA:61,1,0,4
-DA:62,4
-DA:65,14
-BRDA:65,2,0,4
-DA:66,4
-DA:68,10
-DA:71,8
-FN:71,RuleERC2980Base._detectTransferRestrictionFrom
-FNDA:8,RuleERC2980Base._detectTransferRestrictionFrom
-DA:78,8
-BRDA:78,3,0,4
-DA:79,4
-DA:81,4
-DA:88,4
-FN:88,RuleERC2980Base.transferred.0
-FNDA:4,RuleERC2980Base.transferred.0
-DA:94,4
-DA:97,2
-FN:97,RuleERC2980Base.transferred.1
-FNDA:2,RuleERC2980Base.transferred.1
-DA:103,2
-DA:106,5
-FN:106,RuleERC2980Base._transferred
-FNDA:5,RuleERC2980Base._transferred
-DA:107,5
-DA:108,5
-BRDA:108,4,0,3
-BRDA:108,4,1,2
-DA:114,3
-FN:114,RuleERC2980Base._transferredFrom
-FNDA:3,RuleERC2980Base._transferredFrom
-DA:115,3
-DA:116,3
-BRDA:116,5,0,1
-BRDA:116,5,1,2
-DA:126,5
-FN:126,RuleERC2980Base.canReturnTransferRestrictionCode
-FNDA:5,RuleERC2980Base.canReturnTransferRestrictionCode
-DA:133,5
-DA:134,3
-DA:137,5
-FN:137,RuleERC2980Base.messageForTransferRestriction
-FNDA:5,RuleERC2980Base.messageForTransferRestriction
-DA:144,5
-BRDA:144,6,0,1
-BRDA:144,6,1,1
-DA:145,1
-DA:146,4
-BRDA:146,7,0,1
-BRDA:146,7,1,1
-DA:147,1
-DA:148,3
-BRDA:148,8,0,1
-BRDA:148,8,1,1
-DA:149,1
-DA:150,2
-BRDA:150,9,0,1
-BRDA:150,9,1,1
-DA:151,1
-DA:153,1
-DA:165,6
-FN:165,RuleERC2980Base.addWhitelistAddresses
+DA:41,67
+FN:41,RuleERC2980Base.constructor
+FNDA:67,RuleERC2980Base.constructor
+DA:42,2
+BRDA:42,0,0,2
+DA:43,2
+DA:44,2
+DA:52,6
+FN:52,RuleERC2980Base.onlyWhitelistAdd
+FNDA:6,RuleERC2980Base.onlyWhitelistAdd
+DA:53,6
+DA:57,7
+FN:57,RuleERC2980Base.onlyWhitelistRemove
+FNDA:7,RuleERC2980Base.onlyWhitelistRemove
+DA:58,7
+DA:62,6
+FN:62,RuleERC2980Base.onlyFrozenlistAdd
+FNDA:6,RuleERC2980Base.onlyFrozenlistAdd
+DA:63,6
+DA:67,2
+FN:67,RuleERC2980Base.onlyFrozenlistRemove
+FNDA:2,RuleERC2980Base.onlyFrozenlistRemove
+DA:68,2
+DA:72,0
+FN:72,RuleERC2980Base._authorizeWhitelistAdd
+FNDA:0,RuleERC2980Base._authorizeWhitelistAdd
+DA:73,0
+FN:73,RuleERC2980Base._authorizeWhitelistRemove
+FNDA:0,RuleERC2980Base._authorizeWhitelistRemove
+DA:74,0
+FN:74,RuleERC2980Base._authorizeFrozenlistAdd
+FNDA:0,RuleERC2980Base._authorizeFrozenlistAdd
+DA:75,0
+FN:75,RuleERC2980Base._authorizeFrozenlistRemove
+FNDA:0,RuleERC2980Base._authorizeFrozenlistRemove
+DA:85,6
+FN:85,RuleERC2980Base.addWhitelistAddresses
FNDA:6,RuleERC2980Base.addWhitelistAddresses
-DA:166,4
-DA:167,4
-DA:174,4
-FN:174,RuleERC2980Base.removeWhitelistAddresses
+DA:86,4
+DA:87,4
+DA:94,4
+FN:94,RuleERC2980Base.removeWhitelistAddresses
FNDA:4,RuleERC2980Base.removeWhitelistAddresses
-DA:175,3
-DA:176,3
-DA:187,43
-FN:187,RuleERC2980Base.addWhitelistAddress
-FNDA:43,RuleERC2980Base.addWhitelistAddress
-DA:188,40
-BRDA:188,10,0,1
-BRDA:188,10,1,39
-DA:189,39
-DA:190,39
-DA:201,7
-FN:201,RuleERC2980Base.removeWhitelistAddress
+DA:95,3
+DA:96,3
+DA:107,45
+FN:107,RuleERC2980Base.addWhitelistAddress
+FNDA:45,RuleERC2980Base.addWhitelistAddress
+DA:108,42
+BRDA:108,1,0,1
+BRDA:108,1,1,41
+DA:109,41
+DA:110,41
+DA:121,7
+FN:121,RuleERC2980Base.removeWhitelistAddress
FNDA:7,RuleERC2980Base.removeWhitelistAddress
-DA:202,5
-BRDA:202,11,0,1
-BRDA:202,11,1,4
-DA:203,4
-DA:204,4
-DA:210,5
-FN:210,RuleERC2980Base.whitelistAddressCount
-FNDA:5,RuleERC2980Base.whitelistAddressCount
-DA:211,5
-DA:217,13
-FN:217,RuleERC2980Base.isWhitelisted
-FNDA:13,RuleERC2980Base.isWhitelisted
-DA:218,13
-DA:224,5
-FN:224,RuleERC2980Base.whitelist
-FNDA:5,RuleERC2980Base.whitelist
-DA:225,5
-DA:233,3
-FN:233,RuleERC2980Base.isVerified
-FNDA:3,RuleERC2980Base.isVerified
-DA:234,3
-DA:240,1
-FN:240,RuleERC2980Base.areWhitelisted
-FNDA:1,RuleERC2980Base.areWhitelisted
-DA:241,1
-DA:242,1
-DA:243,2
-DA:255,6
-FN:255,RuleERC2980Base.addFrozenlistAddresses
+DA:122,5
+BRDA:122,2,0,1
+BRDA:122,2,1,4
+DA:123,4
+DA:124,4
+DA:135,6
+FN:135,RuleERC2980Base.addFrozenlistAddresses
FNDA:6,RuleERC2980Base.addFrozenlistAddresses
-DA:256,4
-DA:257,4
-DA:264,2
-FN:264,RuleERC2980Base.removeFrozenlistAddresses
+DA:136,4
+DA:137,4
+DA:144,2
+FN:144,RuleERC2980Base.removeFrozenlistAddresses
FNDA:2,RuleERC2980Base.removeFrozenlistAddresses
-DA:265,2
-DA:266,2
-DA:277,22
-FN:277,RuleERC2980Base.addFrozenlistAddress
+DA:145,2
+DA:146,2
+DA:157,22
+FN:157,RuleERC2980Base.addFrozenlistAddress
FNDA:22,RuleERC2980Base.addFrozenlistAddress
-DA:278,19
-BRDA:278,12,0,1
-BRDA:278,12,1,18
-DA:279,18
-DA:280,18
-DA:291,7
-FN:291,RuleERC2980Base.removeFrozenlistAddress
+DA:158,19
+BRDA:158,3,0,1
+BRDA:158,3,1,18
+DA:159,18
+DA:160,18
+DA:171,7
+FN:171,RuleERC2980Base.removeFrozenlistAddress
FNDA:7,RuleERC2980Base.removeFrozenlistAddress
-DA:292,5
-BRDA:292,13,0,1
-BRDA:292,13,1,4
-DA:293,4
-DA:294,4
-DA:300,4
-FN:300,RuleERC2980Base.frozenlistAddressCount
+DA:172,5
+BRDA:172,4,0,1
+BRDA:172,4,1,4
+DA:173,4
+DA:174,4
+DA:181,4
+FN:181,RuleERC2980Base.transferred.0
+FNDA:4,RuleERC2980Base.transferred.0
+DA:187,4
+DA:190,2
+FN:190,RuleERC2980Base.transferred.1
+FNDA:2,RuleERC2980Base.transferred.1
+DA:196,2
+DA:199,5
+FN:199,RuleERC2980Base.canReturnTransferRestrictionCode
+FNDA:5,RuleERC2980Base.canReturnTransferRestrictionCode
+DA:206,5
+DA:207,3
+DA:210,5
+FN:210,RuleERC2980Base.messageForTransferRestriction
+FNDA:5,RuleERC2980Base.messageForTransferRestriction
+DA:217,5
+BRDA:217,5,0,1
+BRDA:217,5,1,1
+DA:218,1
+DA:219,4
+BRDA:219,6,0,1
+BRDA:219,6,1,1
+DA:220,1
+DA:221,3
+BRDA:221,7,0,1
+BRDA:221,7,1,1
+DA:222,1
+DA:223,2
+BRDA:223,8,0,1
+BRDA:223,8,1,1
+DA:224,1
+DA:226,1
+DA:230,1
+FN:230,RuleERC2980Base.supportsInterface
+FNDA:1,RuleERC2980Base.supportsInterface
+DA:231,1
+DA:237,5
+FN:237,RuleERC2980Base.whitelistAddressCount
+FNDA:5,RuleERC2980Base.whitelistAddressCount
+DA:238,5
+DA:244,14
+FN:244,RuleERC2980Base.isWhitelisted
+FNDA:14,RuleERC2980Base.isWhitelisted
+DA:245,14
+DA:251,7
+FN:251,RuleERC2980Base.whitelist
+FNDA:7,RuleERC2980Base.whitelist
+DA:252,7
+DA:260,3
+FN:260,RuleERC2980Base.isVerified
+FNDA:3,RuleERC2980Base.isVerified
+DA:261,3
+DA:267,1
+FN:267,RuleERC2980Base.areWhitelisted
+FNDA:1,RuleERC2980Base.areWhitelisted
+DA:268,1
+DA:269,1
+DA:270,2
+DA:277,4
+FN:277,RuleERC2980Base.frozenlistAddressCount
FNDA:4,RuleERC2980Base.frozenlistAddressCount
-DA:301,4
-DA:307,12
-FN:307,RuleERC2980Base.isFrozen
+DA:278,4
+DA:284,12
+FN:284,RuleERC2980Base.isFrozen
FNDA:12,RuleERC2980Base.isFrozen
-DA:308,12
-DA:314,4
-FN:314,RuleERC2980Base.frozenlist
+DA:285,12
+DA:291,4
+FN:291,RuleERC2980Base.frozenlist
FNDA:4,RuleERC2980Base.frozenlist
-DA:315,4
-DA:321,1
-FN:321,RuleERC2980Base.areFrozen
+DA:292,4
+DA:298,1
+FN:298,RuleERC2980Base.areFrozen
FNDA:1,RuleERC2980Base.areFrozen
-DA:322,1
-DA:323,1
-DA:324,2
-DA:332,1
-FN:332,RuleERC2980Base.supportsInterface
-FNDA:1,RuleERC2980Base.supportsInterface
-DA:333,1
-DA:340,6
-FN:340,RuleERC2980Base.onlyWhitelistAdd
-FNDA:6,RuleERC2980Base.onlyWhitelistAdd
-DA:341,6
-DA:345,7
-FN:345,RuleERC2980Base.onlyWhitelistRemove
-FNDA:7,RuleERC2980Base.onlyWhitelistRemove
-DA:346,7
-DA:350,6
-FN:350,RuleERC2980Base.onlyFrozenlistAdd
-FNDA:6,RuleERC2980Base.onlyFrozenlistAdd
-DA:351,6
-DA:355,2
-FN:355,RuleERC2980Base.onlyFrozenlistRemove
-FNDA:2,RuleERC2980Base.onlyFrozenlistRemove
-DA:356,2
-DA:369,267
-FN:369,RuleERC2980Base._msgSender
-FNDA:267,RuleERC2980Base._msgSender
-DA:370,267
-DA:373,2
-FN:373,RuleERC2980Base._msgData
+DA:299,1
+DA:300,1
+DA:301,2
+DA:309,24
+FN:309,RuleERC2980Base._detectTransferRestriction
+FNDA:24,RuleERC2980Base._detectTransferRestriction
+DA:321,24
+BRDA:321,9,0,4
+BRDA:321,9,1,16
+DA:322,4
+DA:323,20
+BRDA:323,10,0,4
+DA:324,4
+DA:327,16
+BRDA:327,11,0,5
+DA:328,5
+DA:330,11
+DA:333,8
+FN:333,RuleERC2980Base._detectTransferRestrictionFrom
+FNDA:8,RuleERC2980Base._detectTransferRestrictionFrom
+DA:340,8
+BRDA:340,12,0,4
+DA:341,4
+DA:343,4
+DA:346,5
+FN:346,RuleERC2980Base._transferred
+FNDA:5,RuleERC2980Base._transferred
+DA:347,5
+DA:348,5
+BRDA:348,13,0,3
+BRDA:348,13,1,2
+DA:354,3
+FN:354,RuleERC2980Base._transferredFrom
+FNDA:3,RuleERC2980Base._transferredFrom
+DA:355,3
+DA:356,3
+BRDA:356,14,0,1
+BRDA:356,14,1,2
+DA:362,272
+FN:362,RuleERC2980Base._msgSender
+FNDA:272,RuleERC2980Base._msgSender
+DA:363,272
+DA:366,2
+FN:366,RuleERC2980Base._msgData
FNDA:2,RuleERC2980Base._msgData
-DA:374,2
-DA:377,269
-FN:377,RuleERC2980Base._contextSuffixLength
-FNDA:269,RuleERC2980Base._contextSuffixLength
-DA:378,269
-FNF:33
-FNH:33
-LF:101
-LH:101
-BRF:25
-BRH:25
+DA:367,2
+DA:370,274
+FN:370,RuleERC2980Base._contextSuffixLength
+FNDA:274,RuleERC2980Base._contextSuffixLength
+DA:371,274
+FNF:38
+FNH:34
+LF:109
+LH:105
+BRF:26
+BRH:26
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol
-DA:19,26
-FN:19,RuleIdentityRegistryBase.constructor
+DA:23,26
+FN:23,RuleIdentityRegistryBase.constructor
FNDA:26,RuleIdentityRegistryBase.constructor
-DA:20,26
-BRDA:20,0,0,25
-DA:21,25
-DA:25,4
-FN:25,RuleIdentityRegistryBase.setIdentityRegistry
+DA:24,26
+BRDA:24,0,0,25
+DA:25,25
+DA:33,5
+FN:33,RuleIdentityRegistryBase.onlyIdentityRegistryManager
+FNDA:5,RuleIdentityRegistryBase.onlyIdentityRegistryManager
+DA:34,5
+DA:38,0
+FN:38,RuleIdentityRegistryBase._authorizeIdentityRegistryManager
+FNDA:0,RuleIdentityRegistryBase._authorizeIdentityRegistryManager
+DA:44,4
+FN:44,RuleIdentityRegistryBase.canReturnTransferRestrictionCode
+FNDA:4,RuleIdentityRegistryBase.canReturnTransferRestrictionCode
+DA:45,4
+DA:46,2
+DA:53,4
+FN:53,RuleIdentityRegistryBase.setIdentityRegistry
FNDA:4,RuleIdentityRegistryBase.setIdentityRegistry
-DA:26,2
-BRDA:26,1,0,1
-BRDA:26,1,1,1
-DA:27,1
-DA:28,1
-DA:31,5
-FN:31,RuleIdentityRegistryBase.clearIdentityRegistry
+DA:54,2
+BRDA:54,1,0,1
+BRDA:54,1,1,1
+DA:55,1
+DA:56,1
+DA:59,5
+FN:59,RuleIdentityRegistryBase.clearIdentityRegistry
FNDA:5,RuleIdentityRegistryBase.clearIdentityRegistry
-DA:32,3
-DA:33,3
-DA:36,16
-FN:36,RuleIdentityRegistryBase._detectTransferRestriction
-FNDA:16,RuleIdentityRegistryBase._detectTransferRestriction
-DA:46,16
-BRDA:46,2,0,3
-DA:47,3
-DA:49,13
-BRDA:49,3,0,2
-DA:50,2
-DA:53,11
-BRDA:53,4,0,4
-DA:54,4
-DA:56,7
-BRDA:56,5,0,1
-DA:57,1
-DA:59,6
-DA:62,9
-FN:62,RuleIdentityRegistryBase._detectTransferRestrictionFrom
-FNDA:9,RuleIdentityRegistryBase._detectTransferRestrictionFrom
-DA:68,9
-BRDA:68,6,0,1
-DA:69,1
-DA:71,8
-BRDA:71,7,0,1
-DA:72,1
-DA:74,7
-BRDA:74,8,0,4
-DA:75,4
-DA:77,3
-DA:80,2
-FN:80,RuleIdentityRegistryBase.transferred.0
+DA:60,3
+DA:61,3
+DA:64,2
+FN:64,RuleIdentityRegistryBase.transferred.0
FNDA:2,RuleIdentityRegistryBase.transferred.0
-DA:81,2
-DA:84,2
-FN:84,RuleIdentityRegistryBase.transferred.1
+DA:65,2
+DA:68,2
+FN:68,RuleIdentityRegistryBase.transferred.1
FNDA:2,RuleIdentityRegistryBase.transferred.1
-DA:85,2
-DA:88,2
-FN:88,RuleIdentityRegistryBase._transferred
+DA:69,2
+DA:72,4
+FN:72,RuleIdentityRegistryBase.messageForTransferRestriction
+FNDA:4,RuleIdentityRegistryBase.messageForTransferRestriction
+DA:78,4
+BRDA:78,2,0,1
+BRDA:78,2,1,1
+DA:79,1
+DA:80,3
+BRDA:80,3,0,1
+BRDA:80,3,1,1
+DA:81,1
+DA:82,2
+BRDA:82,4,0,1
+DA:83,1
+DA:85,1
+DA:92,16
+FN:92,RuleIdentityRegistryBase._detectTransferRestriction
+FNDA:16,RuleIdentityRegistryBase._detectTransferRestriction
+DA:102,16
+BRDA:102,5,0,3
+DA:103,3
+DA:105,13
+BRDA:105,6,0,2
+DA:106,2
+DA:109,11
+BRDA:109,7,0,4
+DA:110,4
+DA:112,7
+BRDA:112,8,0,1
+DA:113,1
+DA:115,6
+DA:118,9
+FN:118,RuleIdentityRegistryBase._detectTransferRestrictionFrom
+FNDA:9,RuleIdentityRegistryBase._detectTransferRestrictionFrom
+DA:124,9
+BRDA:124,9,0,1
+DA:125,1
+DA:127,8
+BRDA:127,10,0,1
+DA:128,1
+DA:130,7
+BRDA:130,11,0,4
+DA:131,4
+DA:133,3
+DA:136,2
+FN:136,RuleIdentityRegistryBase._transferred
FNDA:2,RuleIdentityRegistryBase._transferred
-DA:89,2
-DA:90,2
-BRDA:90,9,0,1
-BRDA:90,9,1,1
-DA:96,2
-FN:96,RuleIdentityRegistryBase._transferredFrom
+DA:137,2
+DA:138,2
+BRDA:138,12,0,1
+BRDA:138,12,1,1
+DA:144,2
+FN:144,RuleIdentityRegistryBase._transferredFrom
FNDA:2,RuleIdentityRegistryBase._transferredFrom
-DA:97,2
-DA:98,2
-BRDA:98,10,0,1
-BRDA:98,10,1,1
-DA:104,4
-FN:104,RuleIdentityRegistryBase.canReturnTransferRestrictionCode
-FNDA:4,RuleIdentityRegistryBase.canReturnTransferRestrictionCode
-DA:105,4
-DA:106,2
-DA:109,4
-FN:109,RuleIdentityRegistryBase.messageForTransferRestriction
-FNDA:4,RuleIdentityRegistryBase.messageForTransferRestriction
-DA:115,4
-BRDA:115,11,0,1
-BRDA:115,11,1,1
-DA:116,1
-DA:117,3
-BRDA:117,12,0,1
-BRDA:117,12,1,1
-DA:118,1
-DA:119,2
-BRDA:119,13,0,1
-DA:120,1
-DA:122,1
-DA:129,5
-FN:129,RuleIdentityRegistryBase.onlyIdentityRegistryManager
-FNDA:5,RuleIdentityRegistryBase.onlyIdentityRegistryManager
-DA:130,5
-FNF:12
+DA:145,2
+DA:146,2
+BRDA:146,13,0,1
+BRDA:146,13,1,1
+FNF:13
FNH:12
-LF:51
+LF:52
LH:51
BRF:19
BRH:19
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol
-DA:20,25
-FN:20,RuleMaxTotalSupplyBase.constructor
+DA:24,25
+FN:24,RuleMaxTotalSupplyBase.constructor
FNDA:25,RuleMaxTotalSupplyBase.constructor
-DA:21,25
-BRDA:21,0,0,1
-BRDA:21,0,1,24
-DA:22,24
-DA:23,24
-DA:26,260
-FN:26,RuleMaxTotalSupplyBase.setMaxTotalSupply
+DA:25,25
+BRDA:25,0,0,1
+BRDA:25,0,1,24
+DA:26,24
+DA:27,24
+DA:34,2
+FN:34,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode
+FNDA:2,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode
+DA:35,2
+DA:42,260
+FN:42,RuleMaxTotalSupplyBase.setMaxTotalSupply
FNDA:260,RuleMaxTotalSupplyBase.setMaxTotalSupply
-DA:27,258
-DA:28,258
-DA:31,4
-FN:31,RuleMaxTotalSupplyBase.setTokenContract
+DA:43,258
+DA:44,258
+DA:47,4
+FN:47,RuleMaxTotalSupplyBase.setTokenContract
FNDA:4,RuleMaxTotalSupplyBase.setTokenContract
-DA:32,2
-BRDA:32,1,0,1
-BRDA:32,1,1,1
-DA:33,1
-DA:34,1
-DA:37,271
-FN:37,RuleMaxTotalSupplyBase._detectTransferRestriction
-FNDA:271,RuleMaxTotalSupplyBase._detectTransferRestriction
-DA:48,271
-BRDA:48,2,0,268
-DA:49,268
-DA:50,268
-BRDA:50,3,0,176
-DA:51,176
-DA:54,95
-DA:57,2
-FN:57,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom
-FNDA:2,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom
-DA:63,2
-DA:66,2
-FN:66,RuleMaxTotalSupplyBase.transferred.0
+DA:48,2
+BRDA:48,1,0,1
+BRDA:48,1,1,1
+DA:49,1
+DA:50,1
+DA:53,2
+FN:53,RuleMaxTotalSupplyBase.transferred.0
FNDA:2,RuleMaxTotalSupplyBase.transferred.0
-DA:67,2
-DA:70,2
-FN:70,RuleMaxTotalSupplyBase.transferred.1
+DA:54,2
+DA:57,2
+FN:57,RuleMaxTotalSupplyBase.transferred.1
FNDA:2,RuleMaxTotalSupplyBase.transferred.1
-DA:71,2
-DA:74,2
-FN:74,RuleMaxTotalSupplyBase._transferred
-FNDA:2,RuleMaxTotalSupplyBase._transferred
-DA:75,2
-DA:76,2
-BRDA:76,4,0,1
-BRDA:76,4,1,1
-DA:82,2
-FN:82,RuleMaxTotalSupplyBase._transferredFrom
-FNDA:2,RuleMaxTotalSupplyBase._transferredFrom
-DA:83,2
-DA:84,2
-BRDA:84,5,0,1
-BRDA:84,5,1,1
-DA:90,2
-FN:90,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode
-FNDA:2,RuleMaxTotalSupplyBase.canReturnTransferRestrictionCode
-DA:91,2
-DA:94,2
-FN:94,RuleMaxTotalSupplyBase.messageForTransferRestriction
+DA:58,2
+DA:61,2
+FN:61,RuleMaxTotalSupplyBase.messageForTransferRestriction
FNDA:2,RuleMaxTotalSupplyBase.messageForTransferRestriction
-DA:100,2
-BRDA:100,6,0,1
-DA:101,1
-DA:103,1
-DA:110,260
-FN:110,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager
+DA:67,2
+BRDA:67,2,0,1
+DA:68,1
+DA:70,1
+DA:77,260
+FN:77,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager
FNDA:260,RuleMaxTotalSupplyBase.onlyMaxTotalSupplyManager
-DA:111,260
-FNF:12
+DA:78,260
+DA:82,0
+FN:82,RuleMaxTotalSupplyBase._authorizeMaxTotalSupplyManager
+FNDA:0,RuleMaxTotalSupplyBase._authorizeMaxTotalSupplyManager
+DA:88,271
+FN:88,RuleMaxTotalSupplyBase._detectTransferRestriction
+FNDA:271,RuleMaxTotalSupplyBase._detectTransferRestriction
+DA:99,271
+BRDA:99,3,0,268
+DA:100,268
+DA:101,268
+BRDA:101,4,0,186
+DA:102,186
+DA:105,85
+DA:108,2
+FN:108,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom
+FNDA:2,RuleMaxTotalSupplyBase._detectTransferRestrictionFrom
+DA:114,2
+DA:117,2
+FN:117,RuleMaxTotalSupplyBase._transferred
+FNDA:2,RuleMaxTotalSupplyBase._transferred
+DA:118,2
+DA:119,2
+BRDA:119,5,0,1
+BRDA:119,5,1,1
+DA:125,2
+FN:125,RuleMaxTotalSupplyBase._transferredFrom
+FNDA:2,RuleMaxTotalSupplyBase._transferredFrom
+DA:126,2
+DA:127,2
+BRDA:127,6,0,1
+BRDA:127,6,1,1
+FNF:13
FNH:12
-LF:37
+LF:38
LH:37
BRF:11
BRH:11
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleSanctionsListBase.sol
-DA:20,46
-FN:20,RuleSanctionsListBase.constructor
+DA:24,46
+FN:24,RuleSanctionsListBase.constructor
FNDA:46,RuleSanctionsListBase.constructor
-DA:23,45
-BRDA:23,0,0,20
-DA:24,20
-DA:28,84
-FN:28,RuleSanctionsListBase._detectTransferRestriction
-FNDA:84,RuleSanctionsListBase._detectTransferRestriction
-DA:38,84
-BRDA:38,1,0,77
-DA:39,77
-BRDA:39,2,0,10
-BRDA:39,2,1,55
-DA:40,10
-DA:41,67
-BRDA:41,3,0,12
-DA:42,12
-DA:45,62
-DA:48,16
-FN:48,RuleSanctionsListBase._detectTransferRestrictionFrom
-FNDA:16,RuleSanctionsListBase._detectTransferRestrictionFrom
-DA:55,16
-BRDA:55,4,0,15
-DA:56,15
-BRDA:56,5,0,6
-DA:57,6
-DA:59,9
-DA:61,1
-DA:64,3
-FN:64,RuleSanctionsListBase.canReturnTransferRestrictionCode
+DA:27,45
+BRDA:27,0,0,20
+DA:28,20
+DA:36,3
+FN:36,RuleSanctionsListBase.canReturnTransferRestrictionCode
FNDA:3,RuleSanctionsListBase.canReturnTransferRestrictionCode
-DA:65,3
-DA:66,1
-DA:69,4
-FN:69,RuleSanctionsListBase.messageForTransferRestriction
-FNDA:4,RuleSanctionsListBase.messageForTransferRestriction
-DA:75,4
-BRDA:75,6,0,1
-BRDA:75,6,1,1
-DA:76,1
-DA:77,3
-BRDA:77,7,0,1
-BRDA:77,7,1,1
-DA:78,1
-DA:79,2
-BRDA:79,8,0,1
-DA:80,1
-DA:82,1
-DA:85,17
-FN:85,RuleSanctionsListBase.setSanctionListOracle
+DA:37,3
+DA:38,1
+DA:45,17
+FN:45,RuleSanctionsListBase.setSanctionListOracle
FNDA:17,RuleSanctionsListBase.setSanctionListOracle
-DA:86,15
-BRDA:86,9,0,1
-BRDA:86,9,1,14
-DA:87,14
-DA:90,3
-FN:90,RuleSanctionsListBase.clearSanctionListOracle
+DA:46,15
+BRDA:46,1,0,1
+BRDA:46,1,1,14
+DA:47,14
+DA:50,3
+FN:50,RuleSanctionsListBase.clearSanctionListOracle
FNDA:3,RuleSanctionsListBase.clearSanctionListOracle
-DA:91,3
-DA:94,43
-FN:94,RuleSanctionsListBase.transferred.0
+DA:51,3
+DA:54,43
+FN:54,RuleSanctionsListBase.transferred.0
FNDA:43,RuleSanctionsListBase.transferred.0
-DA:95,43
-DA:98,2
-FN:98,RuleSanctionsListBase.transferred.1
+DA:55,43
+DA:58,2
+FN:58,RuleSanctionsListBase.transferred.1
FNDA:2,RuleSanctionsListBase.transferred.1
-DA:99,2
-DA:102,47
-FN:102,RuleSanctionsListBase._transferred
+DA:59,2
+DA:62,4
+FN:62,RuleSanctionsListBase.messageForTransferRestriction
+FNDA:4,RuleSanctionsListBase.messageForTransferRestriction
+DA:68,4
+BRDA:68,2,0,1
+BRDA:68,2,1,1
+DA:69,1
+DA:70,3
+BRDA:70,3,0,1
+BRDA:70,3,1,1
+DA:71,1
+DA:72,2
+BRDA:72,4,0,1
+DA:73,1
+DA:75,1
+DA:82,3
+FN:82,RuleSanctionsListBase.onlySanctionListManager
+FNDA:3,RuleSanctionsListBase.onlySanctionListManager
+DA:83,3
+DA:87,0
+FN:87,RuleSanctionsListBase._authorizeSanctionListManager
+FNDA:0,RuleSanctionsListBase._authorizeSanctionListManager
+DA:93,84
+FN:93,RuleSanctionsListBase._detectTransferRestriction
+FNDA:84,RuleSanctionsListBase._detectTransferRestriction
+DA:103,84
+BRDA:103,5,0,77
+DA:104,77
+BRDA:104,6,0,10
+BRDA:104,6,1,55
+DA:105,10
+DA:106,67
+BRDA:106,7,0,12
+DA:107,12
+DA:110,62
+DA:113,16
+FN:113,RuleSanctionsListBase._detectTransferRestrictionFrom
+FNDA:16,RuleSanctionsListBase._detectTransferRestrictionFrom
+DA:120,16
+BRDA:120,8,0,15
+DA:121,15
+BRDA:121,9,0,6
+DA:122,6
+DA:124,9
+DA:126,1
+DA:129,47
+FN:129,RuleSanctionsListBase._transferred
FNDA:47,RuleSanctionsListBase._transferred
-DA:103,47
-DA:104,47
-BRDA:104,10,0,6
-BRDA:104,10,1,41
-DA:110,3
-FN:110,RuleSanctionsListBase._transferredFrom
+DA:130,47
+DA:131,47
+BRDA:131,10,0,6
+BRDA:131,10,1,41
+DA:137,3
+FN:137,RuleSanctionsListBase._transferredFrom
FNDA:3,RuleSanctionsListBase._transferredFrom
-DA:111,3
-DA:112,3
-BRDA:112,11,0,2
-BRDA:112,11,1,1
-DA:118,37
-FN:118,RuleSanctionsListBase._setSanctionListOracle
+DA:138,3
+DA:139,3
+BRDA:139,11,0,2
+BRDA:139,11,1,1
+DA:145,37
+FN:145,RuleSanctionsListBase._setSanctionListOracle
FNDA:37,RuleSanctionsListBase._setSanctionListOracle
-DA:119,37
-DA:120,37
-DA:127,3
-FN:127,RuleSanctionsListBase.onlySanctionListManager
-FNDA:3,RuleSanctionsListBase.onlySanctionListManager
-DA:128,3
-FNF:13
+DA:146,37
+DA:147,37
+FNF:14
FNH:13
-LF:47
+LF:48
LH:47
BRF:18
BRH:18
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol
-DA:19,4
-FN:19,RuleSpenderWhitelistBase._detectTransferRestriction
-FNDA:4,RuleSpenderWhitelistBase._detectTransferRestriction
-DA:20,4
-DA:23,13
-FN:23,RuleSpenderWhitelistBase._detectTransferRestrictionFrom
-FNDA:13,RuleSpenderWhitelistBase._detectTransferRestrictionFrom
-DA:30,13
-BRDA:30,0,0,5
-DA:31,5
-DA:33,8
-DA:36,2
-FN:36,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode
+DA:27,2
+FN:27,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode
FNDA:2,RuleSpenderWhitelistBase.canReturnTransferRestrictionCode
-DA:37,2
-DA:40,2
-FN:40,RuleSpenderWhitelistBase.messageForTransferRestriction
-FNDA:2,RuleSpenderWhitelistBase.messageForTransferRestriction
-DA:46,2
-BRDA:46,1,0,1
-DA:47,1
-DA:49,1
-DA:55,1
-FN:55,RuleSpenderWhitelistBase.transferred.0
+DA:28,2
+DA:38,1
+FN:38,RuleSpenderWhitelistBase.transferred.0
FNDA:1,RuleSpenderWhitelistBase.transferred.0
-DA:57,2
-FN:57,RuleSpenderWhitelistBase.transferred.1
+DA:40,2
+FN:40,RuleSpenderWhitelistBase.transferred.1
FNDA:2,RuleSpenderWhitelistBase.transferred.1
-DA:58,2
-DA:61,3
-FN:61,RuleSpenderWhitelistBase._transferred
+DA:41,2
+DA:44,2
+FN:44,RuleSpenderWhitelistBase.messageForTransferRestriction
+FNDA:2,RuleSpenderWhitelistBase.messageForTransferRestriction
+DA:50,2
+BRDA:50,0,0,1
+DA:51,1
+DA:53,1
+DA:60,4
+FN:60,RuleSpenderWhitelistBase._detectTransferRestriction
+FNDA:4,RuleSpenderWhitelistBase._detectTransferRestriction
+DA:61,4
+DA:64,13
+FN:64,RuleSpenderWhitelistBase._detectTransferRestrictionFrom
+FNDA:13,RuleSpenderWhitelistBase._detectTransferRestrictionFrom
+DA:71,13
+BRDA:71,1,0,5
+DA:72,5
+DA:74,8
+DA:77,3
+FN:77,RuleSpenderWhitelistBase._transferred
FNDA:3,RuleSpenderWhitelistBase._transferred
-DA:65,7
-FN:65,RuleSpenderWhitelistBase._transferredFrom
+DA:81,7
+FN:81,RuleSpenderWhitelistBase._transferredFrom
FNDA:7,RuleSpenderWhitelistBase._transferredFrom
-DA:66,7
-DA:67,7
-BRDA:67,2,0,3
-BRDA:67,2,1,4
+DA:82,7
+DA:83,7
+BRDA:83,2,0,3
+BRDA:83,2,1,4
FNF:8
FNH:8
LF:19
@@ -1016,298 +1078,324 @@ BRH:4
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleWhitelistBase.sol
-DA:14,159
-FN:14,RuleWhitelistBase.constructor
-FNDA:159,RuleWhitelistBase.constructor
-DA:15,159
-DA:18,53
-FN:18,RuleWhitelistBase._detectTransferRestriction
-FNDA:53,RuleWhitelistBase._detectTransferRestriction
-DA:29,53
-BRDA:29,0,0,13
-BRDA:29,0,1,30
-DA:30,13
-DA:31,40
-BRDA:31,1,0,10
-DA:32,10
-DA:34,30
-DA:37,18
-FN:37,RuleWhitelistBase._detectTransferRestrictionFrom
-FNDA:18,RuleWhitelistBase._detectTransferRestrictionFrom
-DA:44,18
-BRDA:44,2,0,8
-DA:45,8
-DA:47,10
-DA:50,2
-FN:50,RuleWhitelistBase.isVerified
-FNDA:2,RuleWhitelistBase.isVerified
-DA:57,2
-DA:60,3
-FN:60,RuleWhitelistBase.setCheckSpender
+DA:18,163
+FN:18,RuleWhitelistBase.constructor
+FNDA:163,RuleWhitelistBase.constructor
+DA:21,163
+DA:22,2
+BRDA:22,0,0,2
+DA:23,2
+DA:24,2
+DA:32,3
+FN:32,RuleWhitelistBase.setCheckSpender
FNDA:3,RuleWhitelistBase.setCheckSpender
-DA:61,2
-DA:62,2
-DA:65,2
-FN:65,RuleWhitelistBase._setCheckSpender
-FNDA:2,RuleWhitelistBase._setCheckSpender
-DA:66,2
-DA:69,27
-FN:69,RuleWhitelistBase.supportsInterface
+DA:33,2
+DA:34,2
+DA:37,2
+FN:37,RuleWhitelistBase.isVerified
+FNDA:2,RuleWhitelistBase.isVerified
+DA:44,2
+DA:47,27
+FN:47,RuleWhitelistBase.supportsInterface
FNDA:27,RuleWhitelistBase.supportsInterface
-DA:70,27
-DA:77,3
-FN:77,RuleWhitelistBase.onlyCheckSpenderManager
+DA:48,27
+DA:55,3
+FN:55,RuleWhitelistBase.onlyCheckSpenderManager
FNDA:3,RuleWhitelistBase.onlyCheckSpenderManager
-DA:78,3
-FNF:8
+DA:56,3
+DA:60,0
+FN:60,RuleWhitelistBase._authorizeCheckSpenderManager
+FNDA:0,RuleWhitelistBase._authorizeCheckSpenderManager
+DA:66,53
+FN:66,RuleWhitelistBase._detectTransferRestriction
+FNDA:53,RuleWhitelistBase._detectTransferRestriction
+DA:77,53
+BRDA:77,1,0,13
+BRDA:77,1,1,30
+DA:78,13
+DA:79,40
+BRDA:79,2,0,10
+DA:80,10
+DA:82,30
+DA:85,18
+FN:85,RuleWhitelistBase._detectTransferRestrictionFrom
+FNDA:18,RuleWhitelistBase._detectTransferRestrictionFrom
+DA:92,18
+BRDA:92,3,0,8
+DA:93,8
+DA:95,10
+DA:98,2
+FN:98,RuleWhitelistBase._setCheckSpender
+FNDA:2,RuleWhitelistBase._setCheckSpender
+DA:99,2
+FNF:9
FNH:8
-LF:23
-LH:23
-BRF:4
-BRH:4
+LF:27
+LH:26
+BRF:5
+BRH:5
end_of_record
TN:
SF:src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol
-DA:34,44
-FN:34,RuleWhitelistWrapperBase.constructor
+DA:31,44
+FN:31,RuleWhitelistWrapperBase.constructor
FNDA:44,RuleWhitelistWrapperBase.constructor
-DA:35,44
-DA:46,34
-FN:46,RuleWhitelistWrapperBase._detectTransferRestriction
+DA:32,44
+DA:39,4
+FN:39,RuleWhitelistWrapperBase.onlyCheckSpenderManager
+FNDA:4,RuleWhitelistWrapperBase.onlyCheckSpenderManager
+DA:40,4
+DA:44,0
+FN:44,RuleWhitelistWrapperBase._authorizeCheckSpenderManager
+FNDA:0,RuleWhitelistWrapperBase._authorizeCheckSpenderManager
+DA:58,4
+FN:58,RuleWhitelistWrapperBase.setCheckSpender
+FNDA:4,RuleWhitelistWrapperBase.setCheckSpender
+DA:59,3
+DA:60,3
+DA:63,46
+FN:63,RuleWhitelistWrapperBase.supportsInterface
+FNDA:46,RuleWhitelistWrapperBase.supportsInterface
+DA:70,46
+DA:77,4
+FN:77,RuleWhitelistWrapperBase.isVerified
+FNDA:4,RuleWhitelistWrapperBase.isVerified
+DA:78,4
+DA:79,4
+DA:80,4
+DA:81,4
+DA:95,34
+FN:95,RuleWhitelistWrapperBase._detectTransferRestriction
FNDA:34,RuleWhitelistWrapperBase._detectTransferRestriction
-DA:57,34
-DA:58,34
-DA:59,34
-DA:61,34
-DA:62,34
-BRDA:62,0,0,13
-BRDA:62,0,1,13
-DA:63,13
-DA:64,21
-BRDA:64,1,0,8
-BRDA:64,1,1,13
-DA:65,8
-DA:67,13
-DA:71,20
-FN:71,RuleWhitelistWrapperBase._detectTransferRestrictionFrom
+DA:106,34
+DA:107,34
+DA:108,34
+DA:110,34
+DA:111,34
+BRDA:111,0,0,13
+BRDA:111,0,1,13
+DA:112,13
+DA:113,21
+BRDA:113,1,0,8
+BRDA:113,1,1,13
+DA:114,8
+DA:116,13
+DA:120,20
+FN:120,RuleWhitelistWrapperBase._detectTransferRestrictionFrom
FNDA:20,RuleWhitelistWrapperBase._detectTransferRestrictionFrom
-DA:78,20
-BRDA:78,2,0,1
-DA:79,1
-DA:82,19
-DA:83,19
-DA:84,19
-DA:85,19
-DA:87,19
-DA:89,19
-BRDA:89,3,0,1
-BRDA:89,3,1,9
-DA:90,1
-DA:91,18
-BRDA:91,4,0,1
-BRDA:91,4,1,9
-DA:92,1
-DA:93,17
-BRDA:93,5,0,8
-BRDA:93,5,1,9
-DA:94,8
-DA:96,9
-DA:102,62
-FN:102,RuleWhitelistWrapperBase.supportsInterface
-FNDA:62,RuleWhitelistWrapperBase.supportsInterface
-DA:109,62
-DA:116,4
-FN:116,RuleWhitelistWrapperBase.isVerified
-FNDA:4,RuleWhitelistWrapperBase.isVerified
-DA:117,4
-DA:118,4
-DA:119,4
-DA:120,4
-DA:133,4
-FN:133,RuleWhitelistWrapperBase.setCheckSpender
-FNDA:4,RuleWhitelistWrapperBase.setCheckSpender
-DA:134,3
-DA:135,3
-DA:138,13
-FN:138,RuleWhitelistWrapperBase._transferred.0
+DA:127,20
+BRDA:127,2,0,1
+DA:128,1
+DA:131,19
+DA:132,19
+DA:133,19
+DA:134,19
+DA:136,19
+DA:138,19
+BRDA:138,3,0,1
+BRDA:138,3,1,9
+DA:139,1
+DA:140,18
+BRDA:140,4,0,1
+BRDA:140,4,1,9
+DA:141,1
+DA:142,17
+BRDA:142,5,0,8
+BRDA:142,5,1,9
+DA:143,8
+DA:145,9
+DA:151,13
+FN:151,RuleWhitelistWrapperBase._transferred.0
FNDA:13,RuleWhitelistWrapperBase._transferred.0
-DA:144,13
-DA:147,1
-FN:147,RuleWhitelistWrapperBase._transferred.1
+DA:157,13
+DA:160,1
+FN:160,RuleWhitelistWrapperBase._transferred.1
FNDA:1,RuleWhitelistWrapperBase._transferred.1
-DA:153,1
-DA:165,57
-FN:165,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets
+DA:166,1
+DA:174,57
+FN:174,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets
FNDA:57,RuleWhitelistWrapperBase._detectTransferRestrictionForTargets
-DA:171,57
-DA:172,57
-DA:173,57
-DA:176,105
-DA:177,105
-DA:178,85
-BRDA:178,6,0,85
-DA:179,85
-DA:184,105
+DA:180,57
+DA:181,57
+DA:182,57
DA:185,105
-DA:186,201
-BRDA:186,7,0,81
-DA:187,81
-DA:188,81
-DA:191,24
-BRDA:191,8,0,24
-DA:192,24
-DA:195,57
-DA:202,3
-FN:202,RuleWhitelistWrapperBase._setCheckSpender
+DA:186,105
+DA:187,85
+BRDA:187,6,0,85
+DA:188,85
+DA:193,105
+DA:194,105
+DA:195,201
+BRDA:195,7,0,81
+DA:196,81
+DA:197,81
+DA:200,24
+BRDA:200,8,0,24
+DA:201,24
+DA:204,57
+DA:211,3
+FN:211,RuleWhitelistWrapperBase._setCheckSpender
FNDA:3,RuleWhitelistWrapperBase._setCheckSpender
-DA:203,3
-DA:210,4
-FN:210,RuleWhitelistWrapperBase.onlyCheckSpenderManager
-FNDA:4,RuleWhitelistWrapperBase.onlyCheckSpenderManager
-DA:211,4
-DA:224,145
-FN:224,RuleWhitelistWrapperBase._msgSender
+DA:212,3
+DA:222,145
+FN:222,RuleWhitelistWrapperBase._msgSender
FNDA:145,RuleWhitelistWrapperBase._msgSender
-DA:225,145
-DA:231,2
-FN:231,RuleWhitelistWrapperBase._msgData
+DA:223,145
+DA:229,2
+FN:229,RuleWhitelistWrapperBase._msgData
FNDA:2,RuleWhitelistWrapperBase._msgData
-DA:232,2
-DA:238,147
-FN:238,RuleWhitelistWrapperBase._contextSuffixLength
+DA:230,2
+DA:236,147
+FN:236,RuleWhitelistWrapperBase._contextSuffixLength
FNDA:147,RuleWhitelistWrapperBase._contextSuffixLength
-DA:239,147
-FNF:14
+DA:237,147
+FNF:15
FNH:14
-LF:67
+LF:68
LH:67
BRF:14
BRH:14
end_of_record
TN:
SF:src/rules/validation/abstract/core/RuleNFTAdapter.sol
-DA:39,17
-FN:39,RuleNFTAdapter.detectTransferRestriction
+DA:34,17
+FN:34,RuleNFTAdapter.detectTransferRestriction
FNDA:17,RuleNFTAdapter.detectTransferRestriction
-DA:52,17
-DA:58,13
-FN:58,RuleNFTAdapter.detectTransferRestrictionFrom
+DA:47,17
+DA:53,13
+FN:53,RuleNFTAdapter.detectTransferRestrictionFrom
FNDA:13,RuleNFTAdapter.detectTransferRestrictionFrom
-DA:66,13
-DA:72,15
-FN:72,RuleNFTAdapter.canTransfer
+DA:61,13
+DA:67,15
+FN:67,RuleNFTAdapter.canTransfer
FNDA:15,RuleNFTAdapter.canTransfer
-DA:84,15
-DA:90,11
-FN:90,RuleNFTAdapter.canTransferFrom
+DA:79,15
+DA:85,11
+FN:85,RuleNFTAdapter.canTransferFrom
FNDA:11,RuleNFTAdapter.canTransferFrom
-DA:104,11
-DA:111,14
-FN:111,RuleNFTAdapter.transferred.0
+DA:99,11
+DA:106,14
+FN:106,RuleNFTAdapter.transferred.0
FNDA:14,RuleNFTAdapter.transferred.0
-DA:122,14
-DA:128,9
-FN:128,RuleNFTAdapter.transferred.1
+DA:117,14
+DA:123,9
+FN:123,RuleNFTAdapter.transferred.1
FNDA:9,RuleNFTAdapter.transferred.1
-DA:140,9
-DA:146,6
-FN:146,RuleNFTAdapter.transferred.2
+DA:135,9
+DA:141,6
+FN:141,RuleNFTAdapter.transferred.2
FNDA:6,RuleNFTAdapter.transferred.2
-DA:147,6
-BRDA:147,0,0,3
-BRDA:147,0,1,3
-DA:148,3
-DA:150,3
-DA:157,6
-FN:157,RuleNFTAdapter.transferred.3
+DA:142,6
+BRDA:142,0,0,3
+BRDA:142,0,1,3
+DA:143,3
+DA:145,3
+DA:152,6
+FN:152,RuleNFTAdapter.transferred.3
FNDA:6,RuleNFTAdapter.transferred.3
-DA:158,6
-BRDA:158,1,0,3
-BRDA:158,1,1,3
-DA:159,3
-DA:161,3
-FNF:8
+DA:153,6
+BRDA:153,1,0,3
+BRDA:153,1,1,3
+DA:154,3
+DA:156,3
+DA:167,0
+FN:167,RuleNFTAdapter._transferred
+FNDA:0,RuleNFTAdapter._transferred
+DA:172,0
+FN:172,RuleNFTAdapter._transferredFrom
+FNDA:0,RuleNFTAdapter._transferredFrom
+FNF:10
FNH:8
-LF:20
+LF:22
LH:20
BRF:4
BRH:4
end_of_record
TN:
SF:src/rules/validation/abstract/core/RuleTransferValidation.sol
-DA:52,349
-FN:52,RuleTransferValidation.detectTransferRestriction
-FNDA:349,RuleTransferValidation.detectTransferRestriction
-DA:59,349
-DA:65,38
-FN:65,RuleTransferValidation.detectTransferRestrictionFrom
+DA:32,351
+FN:32,RuleTransferValidation.detectTransferRestriction
+FNDA:351,RuleTransferValidation.detectTransferRestriction
+DA:39,351
+DA:45,38
+FN:45,RuleTransferValidation.detectTransferRestrictionFrom
FNDA:38,RuleTransferValidation.detectTransferRestrictionFrom
-DA:72,38
-DA:83,21
-FN:83,RuleTransferValidation.canTransfer
+DA:52,38
+DA:63,21
+FN:63,RuleTransferValidation.canTransfer
FNDA:21,RuleTransferValidation.canTransfer
-DA:89,21
-DA:95,14
-FN:95,RuleTransferValidation.canTransferFrom
+DA:69,21
+DA:75,14
+FN:75,RuleTransferValidation.canTransferFrom
FNDA:14,RuleTransferValidation.canTransferFrom
-DA:102,14
-DA:106,196
-FN:106,RuleTransferValidation.supportsInterface
-FNDA:196,RuleTransferValidation.supportsInterface
-DA:107,196
-FNF:5
+DA:82,14
+DA:86,198
+FN:86,RuleTransferValidation.supportsInterface
+FNDA:198,RuleTransferValidation.supportsInterface
+DA:87,198
+DA:88,197
+DA:89,196
+DA:90,108
+DA:91,108
+DA:105,0
+FN:105,RuleTransferValidation._detectTransferRestriction
+FNDA:0,RuleTransferValidation._detectTransferRestriction
+DA:119,0
+FN:119,RuleTransferValidation._detectTransferRestrictionFrom
+FNDA:0,RuleTransferValidation._detectTransferRestrictionFrom
+FNF:7
FNH:5
-LF:10
-LH:10
+LF:16
+LH:14
BRF:0
BRH:0
end_of_record
TN:
SF:src/rules/validation/abstract/core/RuleWhitelistShared.sol
-DA:33,10
-FN:33,RuleWhitelistShared.canReturnTransferRestrictionCode
+DA:36,10
+FN:36,RuleWhitelistShared.canReturnTransferRestrictionCode
FNDA:10,RuleWhitelistShared.canReturnTransferRestrictionCode
-DA:34,10
-DA:35,5
-DA:36,2
-DA:46,14
-FN:46,RuleWhitelistShared.messageForTransferRestriction
+DA:37,10
+DA:38,5
+DA:39,2
+DA:49,14
+FN:49,RuleWhitelistShared.messageForTransferRestriction
FNDA:14,RuleWhitelistShared.messageForTransferRestriction
-DA:52,14
-BRDA:52,0,0,6
-BRDA:52,0,1,2
-DA:53,6
-DA:54,8
-BRDA:54,1,0,4
-BRDA:54,1,1,2
-DA:55,4
-DA:56,4
-BRDA:56,2,0,2
-BRDA:56,2,1,2
-DA:57,2
-DA:59,2
-DA:76,19
-FN:76,RuleWhitelistShared.transferred.0
+DA:55,14
+BRDA:55,0,0,6
+BRDA:55,0,1,2
+DA:56,6
+DA:57,8
+BRDA:57,1,0,4
+BRDA:57,1,1,2
+DA:58,4
+DA:59,4
+BRDA:59,2,0,2
+BRDA:59,2,1,2
+DA:60,2
+DA:62,2
+DA:81,19
+FN:81,RuleWhitelistShared.transferred.0
FNDA:19,RuleWhitelistShared.transferred.0
-DA:77,19
-DA:91,4
-FN:91,RuleWhitelistShared.transferred.1
+DA:82,19
+DA:96,4
+FN:96,RuleWhitelistShared.transferred.1
FNDA:4,RuleWhitelistShared.transferred.1
-DA:92,4
-DA:95,28
-FN:95,RuleWhitelistShared._transferred
+DA:97,4
+DA:104,28
+FN:104,RuleWhitelistShared._transferred
FNDA:28,RuleWhitelistShared._transferred
-DA:96,28
-DA:97,28
-BRDA:97,3,0,14
-BRDA:97,3,1,14
-DA:103,11
-FN:103,RuleWhitelistShared._transferredFrom
+DA:105,28
+DA:106,28
+BRDA:106,3,0,14
+BRDA:106,3,1,14
+DA:112,11
+FN:112,RuleWhitelistShared._transferredFrom
FNDA:11,RuleWhitelistShared._transferredFrom
-DA:104,11
-DA:105,11
-BRDA:105,4,0,4
-BRDA:105,4,1,7
+DA:113,11
+DA:114,11
+BRDA:114,4,0,4
+BRDA:114,4,1,7
FNF:6
FNH:6
LF:22
@@ -1317,29 +1405,29 @@ BRH:10
end_of_record
TN:
SF:src/rules/validation/deployment/RuleBlacklist.sol
-DA:28,91
-FN:28,RuleBlacklist.supportsInterface
+DA:32,91
+FN:32,RuleBlacklist.supportsInterface
FNDA:91,RuleBlacklist.supportsInterface
-DA:35,91
-DA:36,61
-DA:39,28
-FN:39,RuleBlacklist._authorizeAddressListAdd
+DA:39,91
+DA:40,61
+DA:47,28
+FN:47,RuleBlacklist._authorizeAddressListAdd
FNDA:28,RuleBlacklist._authorizeAddressListAdd
-DA:41,1
-FN:41,RuleBlacklist._authorizeAddressListRemove
+DA:49,1
+FN:49,RuleBlacklist._authorizeAddressListRemove
FNDA:1,RuleBlacklist._authorizeAddressListRemove
-DA:43,83
-FN:43,RuleBlacklist._msgSender
+DA:55,83
+FN:55,RuleBlacklist._msgSender
FNDA:83,RuleBlacklist._msgSender
-DA:44,83
-DA:47,1
-FN:47,RuleBlacklist._msgData
+DA:56,83
+DA:59,1
+FN:59,RuleBlacklist._msgData
FNDA:1,RuleBlacklist._msgData
-DA:48,1
-DA:51,84
-FN:51,RuleBlacklist._contextSuffixLength
+DA:60,1
+DA:63,84
+FN:63,RuleBlacklist._contextSuffixLength
FNDA:84,RuleBlacklist._contextSuffixLength
-DA:52,84
+DA:64,84
FNF:6
FNH:6
LF:11
@@ -1349,24 +1437,24 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol
-DA:17,2
-FN:17,RuleBlacklistOwnable2Step._authorizeAddressListAdd
+DA:25,2
+FN:25,RuleBlacklistOwnable2Step._authorizeAddressListAdd
FNDA:2,RuleBlacklistOwnable2Step._authorizeAddressListAdd
-DA:19,2
-FN:19,RuleBlacklistOwnable2Step._authorizeAddressListRemove
+DA:27,2
+FN:27,RuleBlacklistOwnable2Step._authorizeAddressListRemove
FNDA:2,RuleBlacklistOwnable2Step._authorizeAddressListRemove
-DA:21,12
-FN:21,RuleBlacklistOwnable2Step._msgSender
+DA:33,12
+FN:33,RuleBlacklistOwnable2Step._msgSender
FNDA:12,RuleBlacklistOwnable2Step._msgSender
-DA:22,12
-DA:25,1
-FN:25,RuleBlacklistOwnable2Step._msgData
+DA:34,12
+DA:37,1
+FN:37,RuleBlacklistOwnable2Step._msgData
FNDA:1,RuleBlacklistOwnable2Step._msgData
-DA:26,1
-DA:29,13
-FN:29,RuleBlacklistOwnable2Step._contextSuffixLength
+DA:38,1
+DA:41,13
+FN:41,RuleBlacklistOwnable2Step._contextSuffixLength
FNDA:13,RuleBlacklistOwnable2Step._contextSuffixLength
-DA:30,13
+DA:42,13
FNF:5
FNH:5
LF:8
@@ -1376,34 +1464,34 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleERC2980.sol
-DA:50,1
-FN:50,RuleERC2980.supportsInterface
+DA:51,1
+FN:51,RuleERC2980.supportsInterface
FNDA:1,RuleERC2980.supportsInterface
-DA:57,1
-DA:64,42
-FN:64,RuleERC2980._authorizeWhitelistAdd
-FNDA:42,RuleERC2980._authorizeWhitelistAdd
-DA:66,8
-FN:66,RuleERC2980._authorizeWhitelistRemove
+DA:58,1
+DA:65,44
+FN:65,RuleERC2980._authorizeWhitelistAdd
+FNDA:44,RuleERC2980._authorizeWhitelistAdd
+DA:67,8
+FN:67,RuleERC2980._authorizeWhitelistRemove
FNDA:8,RuleERC2980._authorizeWhitelistRemove
-DA:68,22
-FN:68,RuleERC2980._authorizeFrozenlistAdd
+DA:69,22
+FN:69,RuleERC2980._authorizeFrozenlistAdd
FNDA:22,RuleERC2980._authorizeFrozenlistAdd
-DA:70,7
-FN:70,RuleERC2980._authorizeFrozenlistRemove
+DA:71,7
+FN:71,RuleERC2980._authorizeFrozenlistRemove
FNDA:7,RuleERC2980._authorizeFrozenlistRemove
-DA:72,237
-FN:72,RuleERC2980._msgSender
-FNDA:237,RuleERC2980._msgSender
-DA:73,237
-DA:76,1
-FN:76,RuleERC2980._msgData
+DA:77,242
+FN:77,RuleERC2980._msgSender
+FNDA:242,RuleERC2980._msgSender
+DA:78,242
+DA:81,1
+FN:81,RuleERC2980._msgData
FNDA:1,RuleERC2980._msgData
-DA:77,1
-DA:80,238
-FN:80,RuleERC2980._contextSuffixLength
-FNDA:238,RuleERC2980._contextSuffixLength
-DA:81,238
+DA:82,1
+DA:85,243
+FN:85,RuleERC2980._contextSuffixLength
+FNDA:243,RuleERC2980._contextSuffixLength
+DA:86,243
FNF:8
FNH:8
LF:12
@@ -1413,30 +1501,30 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleERC2980Ownable2Step.sol
-DA:17,7
-FN:17,RuleERC2980Ownable2Step._authorizeWhitelistAdd
+DA:33,7
+FN:33,RuleERC2980Ownable2Step._authorizeWhitelistAdd
FNDA:7,RuleERC2980Ownable2Step._authorizeWhitelistAdd
-DA:19,3
-FN:19,RuleERC2980Ownable2Step._authorizeWhitelistRemove
+DA:35,3
+FN:35,RuleERC2980Ownable2Step._authorizeWhitelistRemove
FNDA:3,RuleERC2980Ownable2Step._authorizeWhitelistRemove
-DA:21,6
-FN:21,RuleERC2980Ownable2Step._authorizeFrozenlistAdd
+DA:37,6
+FN:37,RuleERC2980Ownable2Step._authorizeFrozenlistAdd
FNDA:6,RuleERC2980Ownable2Step._authorizeFrozenlistAdd
-DA:23,2
-FN:23,RuleERC2980Ownable2Step._authorizeFrozenlistRemove
+DA:39,2
+FN:39,RuleERC2980Ownable2Step._authorizeFrozenlistRemove
FNDA:2,RuleERC2980Ownable2Step._authorizeFrozenlistRemove
-DA:25,30
-FN:25,RuleERC2980Ownable2Step._msgSender
+DA:45,30
+FN:45,RuleERC2980Ownable2Step._msgSender
FNDA:30,RuleERC2980Ownable2Step._msgSender
-DA:26,30
-DA:29,1
-FN:29,RuleERC2980Ownable2Step._msgData
+DA:46,30
+DA:49,1
+FN:49,RuleERC2980Ownable2Step._msgData
FNDA:1,RuleERC2980Ownable2Step._msgData
-DA:30,1
-DA:33,31
-FN:33,RuleERC2980Ownable2Step._contextSuffixLength
+DA:50,1
+DA:53,31
+FN:53,RuleERC2980Ownable2Step._contextSuffixLength
FNDA:31,RuleERC2980Ownable2Step._contextSuffixLength
-DA:34,31
+DA:54,31
FNF:7
FNH:7
LF:10
@@ -1446,13 +1534,13 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleIdentityRegistry.sol
-DA:20,15
-FN:20,RuleIdentityRegistry.supportsInterface
+DA:28,15
+FN:28,RuleIdentityRegistry.supportsInterface
FNDA:15,RuleIdentityRegistry.supportsInterface
-DA:27,15
-DA:28,10
-DA:35,5
-FN:35,RuleIdentityRegistry._authorizeIdentityRegistryManager
+DA:35,15
+DA:36,10
+DA:43,5
+FN:43,RuleIdentityRegistry._authorizeIdentityRegistryManager
FNDA:5,RuleIdentityRegistry._authorizeIdentityRegistryManager
FNF:2
FNH:2
@@ -1463,8 +1551,8 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol
-DA:15,4
-FN:15,RuleIdentityRegistryOwnable2Step._authorizeIdentityRegistryManager
+DA:23,4
+FN:23,RuleIdentityRegistryOwnable2Step._authorizeIdentityRegistryManager
FNDA:4,RuleIdentityRegistryOwnable2Step._authorizeIdentityRegistryManager
FNF:1
FNH:1
@@ -1475,13 +1563,13 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleMaxTotalSupply.sol
-DA:24,15
-FN:24,RuleMaxTotalSupply.supportsInterface
+DA:32,15
+FN:32,RuleMaxTotalSupply.supportsInterface
FNDA:15,RuleMaxTotalSupply.supportsInterface
-DA:31,15
-DA:32,10
-DA:39,260
-FN:39,RuleMaxTotalSupply._authorizeMaxTotalSupplyManager
+DA:39,15
+DA:40,10
+DA:47,260
+FN:47,RuleMaxTotalSupply._authorizeMaxTotalSupplyManager
FNDA:260,RuleMaxTotalSupply._authorizeMaxTotalSupplyManager
FNF:2
FNH:2
@@ -1492,8 +1580,8 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol
-DA:18,4
-FN:18,RuleMaxTotalSupplyOwnable2Step._authorizeMaxTotalSupplyManager
+DA:26,4
+FN:26,RuleMaxTotalSupplyOwnable2Step._authorizeMaxTotalSupplyManager
FNDA:4,RuleMaxTotalSupplyOwnable2Step._authorizeMaxTotalSupplyManager
FNF:1
FNH:1
@@ -1504,26 +1592,26 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleSanctionsList.sol
-DA:26,58
-FN:26,RuleSanctionsList.supportsInterface
+DA:34,58
+FN:34,RuleSanctionsList.supportsInterface
FNDA:58,RuleSanctionsList.supportsInterface
-DA:33,58
-DA:34,39
-DA:41,17
-FN:41,RuleSanctionsList._authorizeSanctionListManager
+DA:41,58
+DA:42,39
+DA:49,17
+FN:49,RuleSanctionsList._authorizeSanctionListManager
FNDA:17,RuleSanctionsList._authorizeSanctionListManager
-DA:47,57
-FN:47,RuleSanctionsList._msgSender
+DA:55,57
+FN:55,RuleSanctionsList._msgSender
FNDA:57,RuleSanctionsList._msgSender
-DA:48,57
-DA:51,1
-FN:51,RuleSanctionsList._msgData
+DA:56,57
+DA:59,1
+FN:59,RuleSanctionsList._msgData
FNDA:1,RuleSanctionsList._msgData
-DA:52,1
-DA:55,58
-FN:55,RuleSanctionsList._contextSuffixLength
+DA:60,1
+DA:63,58
+FN:63,RuleSanctionsList._contextSuffixLength
FNDA:58,RuleSanctionsList._contextSuffixLength
-DA:56,58
+DA:64,58
FNF:5
FNH:5
LF:10
@@ -1533,21 +1621,21 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol
-DA:21,3
-FN:21,RuleSanctionsListOwnable2Step._authorizeSanctionListManager
+DA:29,3
+FN:29,RuleSanctionsListOwnable2Step._authorizeSanctionListManager
FNDA:3,RuleSanctionsListOwnable2Step._authorizeSanctionListManager
-DA:23,11
-FN:23,RuleSanctionsListOwnable2Step._msgSender
+DA:35,11
+FN:35,RuleSanctionsListOwnable2Step._msgSender
FNDA:11,RuleSanctionsListOwnable2Step._msgSender
-DA:24,11
-DA:27,1
-FN:27,RuleSanctionsListOwnable2Step._msgData
+DA:36,11
+DA:39,1
+FN:39,RuleSanctionsListOwnable2Step._msgData
FNDA:1,RuleSanctionsListOwnable2Step._msgData
-DA:28,1
-DA:31,13
-FN:31,RuleSanctionsListOwnable2Step._contextSuffixLength
+DA:40,1
+DA:43,13
+FN:43,RuleSanctionsListOwnable2Step._contextSuffixLength
FNDA:13,RuleSanctionsListOwnable2Step._contextSuffixLength
-DA:32,13
+DA:44,13
FNF:4
FNH:4
LF:7
@@ -1557,29 +1645,29 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleSpenderWhitelist.sol
-DA:21,2
-FN:21,RuleSpenderWhitelist.supportsInterface
-FNDA:2,RuleSpenderWhitelist.supportsInterface
-DA:28,2
-DA:29,1
-DA:32,6
-FN:32,RuleSpenderWhitelist._authorizeAddressListAdd
+DA:29,5
+FN:29,RuleSpenderWhitelist.supportsInterface
+FNDA:5,RuleSpenderWhitelist.supportsInterface
+DA:36,5
+DA:37,4
+DA:44,6
+FN:44,RuleSpenderWhitelist._authorizeAddressListAdd
FNDA:6,RuleSpenderWhitelist._authorizeAddressListAdd
-DA:34,2
-FN:34,RuleSpenderWhitelist._authorizeAddressListRemove
+DA:46,2
+FN:46,RuleSpenderWhitelist._authorizeAddressListRemove
FNDA:2,RuleSpenderWhitelist._authorizeAddressListRemove
-DA:36,31
-FN:36,RuleSpenderWhitelist._msgSender
+DA:52,31
+FN:52,RuleSpenderWhitelist._msgSender
FNDA:31,RuleSpenderWhitelist._msgSender
-DA:37,31
-DA:40,1
-FN:40,RuleSpenderWhitelist._msgData
+DA:53,31
+DA:56,1
+FN:56,RuleSpenderWhitelist._msgData
FNDA:1,RuleSpenderWhitelist._msgData
-DA:41,1
-DA:44,33
-FN:44,RuleSpenderWhitelist._contextSuffixLength
+DA:57,1
+DA:60,33
+FN:60,RuleSpenderWhitelist._contextSuffixLength
FNDA:33,RuleSpenderWhitelist._contextSuffixLength
-DA:45,33
+DA:61,33
FNF:6
FNH:6
LF:11
@@ -1589,24 +1677,24 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol
-DA:20,2
-FN:20,RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd
+DA:28,2
+FN:28,RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd
FNDA:2,RuleSpenderWhitelistOwnable2Step._authorizeAddressListAdd
-DA:22,2
-FN:22,RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove
+DA:30,2
+FN:30,RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove
FNDA:2,RuleSpenderWhitelistOwnable2Step._authorizeAddressListRemove
-DA:24,10
-FN:24,RuleSpenderWhitelistOwnable2Step._msgSender
+DA:36,10
+FN:36,RuleSpenderWhitelistOwnable2Step._msgSender
FNDA:10,RuleSpenderWhitelistOwnable2Step._msgSender
-DA:25,10
-DA:28,1
-FN:28,RuleSpenderWhitelistOwnable2Step._msgData
+DA:37,10
+DA:40,1
+FN:40,RuleSpenderWhitelistOwnable2Step._msgData
FNDA:1,RuleSpenderWhitelistOwnable2Step._msgData
-DA:29,1
-DA:32,12
-FN:32,RuleSpenderWhitelistOwnable2Step._contextSuffixLength
+DA:41,1
+DA:44,12
+FN:44,RuleSpenderWhitelistOwnable2Step._contextSuffixLength
FNDA:12,RuleSpenderWhitelistOwnable2Step._contextSuffixLength
-DA:33,12
+DA:45,12
FNF:5
FNH:5
LF:8
@@ -1616,32 +1704,32 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleWhitelist.sol
-DA:43,40
-FN:43,RuleWhitelist.supportsInterface
+DA:47,40
+FN:47,RuleWhitelist.supportsInterface
FNDA:40,RuleWhitelist.supportsInterface
-DA:50,40
-DA:51,27
-DA:58,1
-FN:58,RuleWhitelist._authorizeCheckSpenderManager
+DA:54,40
+DA:55,27
+DA:62,1
+FN:62,RuleWhitelist._authorizeCheckSpenderManager
FNDA:1,RuleWhitelist._authorizeCheckSpenderManager
-DA:60,352
-FN:60,RuleWhitelist._authorizeAddressListAdd
+DA:64,352
+FN:64,RuleWhitelist._authorizeAddressListAdd
FNDA:352,RuleWhitelist._authorizeAddressListAdd
-DA:62,263
-FN:62,RuleWhitelist._authorizeAddressListRemove
+DA:66,263
+FN:66,RuleWhitelist._authorizeAddressListRemove
FNDA:263,RuleWhitelist._authorizeAddressListRemove
-DA:64,778
-FN:64,RuleWhitelist._msgSender
-FNDA:778,RuleWhitelist._msgSender
-DA:65,778
-DA:68,1
-FN:68,RuleWhitelist._msgData
+DA:72,780
+FN:72,RuleWhitelist._msgSender
+FNDA:780,RuleWhitelist._msgSender
+DA:73,780
+DA:76,1
+FN:76,RuleWhitelist._msgData
FNDA:1,RuleWhitelist._msgData
-DA:69,1
-DA:72,779
-FN:72,RuleWhitelist._contextSuffixLength
-FNDA:779,RuleWhitelist._contextSuffixLength
-DA:73,779
+DA:77,1
+DA:80,781
+FN:80,RuleWhitelist._contextSuffixLength
+FNDA:781,RuleWhitelist._contextSuffixLength
+DA:81,781
FNF:7
FNH:7
LF:12
@@ -1651,27 +1739,27 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol
-DA:20,2
-FN:20,RuleWhitelistOwnable2Step._authorizeAddressListAdd
+DA:34,2
+FN:34,RuleWhitelistOwnable2Step._authorizeAddressListAdd
FNDA:2,RuleWhitelistOwnable2Step._authorizeAddressListAdd
-DA:22,2
-FN:22,RuleWhitelistOwnable2Step._authorizeAddressListRemove
+DA:36,2
+FN:36,RuleWhitelistOwnable2Step._authorizeAddressListRemove
FNDA:2,RuleWhitelistOwnable2Step._authorizeAddressListRemove
-DA:24,2
-FN:24,RuleWhitelistOwnable2Step._authorizeCheckSpenderManager
+DA:38,2
+FN:38,RuleWhitelistOwnable2Step._authorizeCheckSpenderManager
FNDA:2,RuleWhitelistOwnable2Step._authorizeCheckSpenderManager
-DA:26,15
-FN:26,RuleWhitelistOwnable2Step._msgSender
+DA:44,15
+FN:44,RuleWhitelistOwnable2Step._msgSender
FNDA:15,RuleWhitelistOwnable2Step._msgSender
-DA:27,15
-DA:30,1
-FN:30,RuleWhitelistOwnable2Step._msgData
+DA:45,15
+DA:48,1
+FN:48,RuleWhitelistOwnable2Step._msgData
FNDA:1,RuleWhitelistOwnable2Step._msgData
-DA:31,1
-DA:34,16
-FN:34,RuleWhitelistOwnable2Step._contextSuffixLength
+DA:49,1
+DA:52,16
+FN:52,RuleWhitelistOwnable2Step._contextSuffixLength
FNDA:16,RuleWhitelistOwnable2Step._contextSuffixLength
-DA:35,16
+DA:53,16
FNF:6
FNH:6
LF:9
@@ -1681,41 +1769,41 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleWhitelistWrapper.sol
-DA:34,38
-FN:34,RuleWhitelistWrapper.hasRole
+DA:35,38
+FN:35,RuleWhitelistWrapper.hasRole
FNDA:38,RuleWhitelistWrapper.hasRole
-DA:41,134
-DA:44,2
-FN:44,RuleWhitelistWrapper._authorizeCheckSpenderManager
+DA:42,134
+DA:45,46
+FN:45,RuleWhitelistWrapper.supportsInterface
+FNDA:46,RuleWhitelistWrapper.supportsInterface
+DA:52,46
+DA:53,31
+DA:60,2
+FN:60,RuleWhitelistWrapper._authorizeCheckSpenderManager
FNDA:2,RuleWhitelistWrapper._authorizeCheckSpenderManager
-DA:49,90
-FN:49,RuleWhitelistWrapper._onlyRulesManager
+DA:65,90
+FN:65,RuleWhitelistWrapper._onlyRulesManager
FNDA:90,RuleWhitelistWrapper._onlyRulesManager
-DA:55,133
-FN:55,RuleWhitelistWrapper._msgSender
+DA:71,133
+FN:71,RuleWhitelistWrapper._msgSender
FNDA:133,RuleWhitelistWrapper._msgSender
-DA:56,133
-DA:59,1
-FN:59,RuleWhitelistWrapper._msgData
+DA:72,133
+DA:75,1
+FN:75,RuleWhitelistWrapper._msgData
FNDA:1,RuleWhitelistWrapper._msgData
-DA:60,1
-DA:63,134
-FN:63,RuleWhitelistWrapper._contextSuffixLength
+DA:76,1
+DA:79,134
+FN:79,RuleWhitelistWrapper._contextSuffixLength
FNDA:134,RuleWhitelistWrapper._contextSuffixLength
-DA:70,134
-DA:73,46
-FN:73,RuleWhitelistWrapper.supportsInterface
-FNDA:46,RuleWhitelistWrapper.supportsInterface
-DA:80,46
-DA:81,16
-DA:84,38
-FN:84,RuleWhitelistWrapper._grantRole
+DA:86,134
+DA:89,38
+FN:89,RuleWhitelistWrapper._grantRole
FNDA:38,RuleWhitelistWrapper._grantRole
-DA:90,38
-DA:93,1
-FN:93,RuleWhitelistWrapper._revokeRole
+DA:95,38
+DA:98,1
+FN:98,RuleWhitelistWrapper._revokeRole
FNDA:1,RuleWhitelistWrapper._revokeRole
-DA:99,1
+DA:104,1
FNF:9
FNH:9
LF:17
@@ -1725,24 +1813,24 @@ BRH:0
end_of_record
TN:
SF:src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol
-DA:28,2
-FN:28,RuleWhitelistWrapperOwnable2Step._authorizeCheckSpenderManager
+DA:32,2
+FN:32,RuleWhitelistWrapperOwnable2Step._authorizeCheckSpenderManager
FNDA:2,RuleWhitelistWrapperOwnable2Step._authorizeCheckSpenderManager
-DA:33,2
-FN:33,RuleWhitelistWrapperOwnable2Step._onlyRulesManager
+DA:37,2
+FN:37,RuleWhitelistWrapperOwnable2Step._onlyRulesManager
FNDA:2,RuleWhitelistWrapperOwnable2Step._onlyRulesManager
-DA:39,12
-FN:39,RuleWhitelistWrapperOwnable2Step._msgSender
+DA:43,12
+FN:43,RuleWhitelistWrapperOwnable2Step._msgSender
FNDA:12,RuleWhitelistWrapperOwnable2Step._msgSender
-DA:40,12
-DA:43,1
-FN:43,RuleWhitelistWrapperOwnable2Step._msgData
+DA:44,12
+DA:47,1
+FN:47,RuleWhitelistWrapperOwnable2Step._msgData
FNDA:1,RuleWhitelistWrapperOwnable2Step._msgData
-DA:44,1
-DA:47,13
-FN:47,RuleWhitelistWrapperOwnable2Step._contextSuffixLength
+DA:48,1
+DA:51,13
+FN:51,RuleWhitelistWrapperOwnable2Step._contextSuffixLength
FNDA:13,RuleWhitelistWrapperOwnable2Step._contextSuffixLength
-DA:54,13
+DA:58,13
FNF:5
FNH:5
LF:8
diff --git a/doc/security/audits/tools/v0.2.0/ackee-wake-arena-v0.2.0-feedback.md b/doc/security/audits/tools/v0.2.0/ackee-wake-arena-v0.2.0-feedback.md
new file mode 100644
index 0000000..00fdb8c
--- /dev/null
+++ b/doc/security/audits/tools/v0.2.0/ackee-wake-arena-v0.2.0-feedback.md
@@ -0,0 +1,295 @@
+# Wake Arena (Ackee Blockchain Security) — Feedback
+
+**Report date:** 2026-03-16
+**Tool:** Wake Arena (AI-assisted static analysis)
+**Audited commit:** `d72a98abbba29cd82a7056b59104e82ac65389e7`
+**Report file:** [ackee-wake-arenav0.2.0.pdf](./ackee-wake-arenav0.2.0.pdf)
+**Feedback date:** 2026-03-18
+
+---
+
+## Summary
+
+| ID | Title | Severity | Confidence | Verdict |
+|----|-------|----------|------------|---------|
+| H1 | ConditionalTransferLight approvals not scoped by token | High | High | **Fixed** |
+| M1 | Incomplete `supportsInterface` breaks ERC-165 discovery | Medium | High | **Fixed** |
+| I1 | RuleERC2980 docs omit frozen spender on `transferFrom` | Info | High | **Fixed (doc only)** |
+| I2 | `hasRole` override: admin implicitly passes all role checks | Info | High | **Fixed (doc only)** |
+
+---
+
+## H1 — ConditionalTransferLight approvals not scoped by token
+
+**Severity:** High | **Confidence:** High | **Verdict: Fixed**
+
+### Finding
+
+`approvalCounts` in `RuleConditionalTransferLightBase` was keyed exclusively by
+`_transferHash(from, to, value)` — a keccak256 of the three packed arguments — with no
+token address in the key.
+
+`_authorizeTransferExecution()` only verified that `msg.sender` was a bound token via
+`isTokenBound(_msgSender())`, without verifying *which* token the approval was created
+for. Because `ERC3643ComplianceModule` supported multiple simultaneous token bindings via
+an `EnumerableSet.AddressSet`, a single rule instance could be bound to Token A and
+Token B at the same time, allowing approvals recorded for one token to be consumed by the
+other.
+
+Three concrete attack vectors were identified:
+
+1. **Cross-token replay** — an approval created by Token A's operator can be consumed by
+ a `transferred` call from Token B.
+2. **Approval draining / DoS** — a malicious operator on Token B deliberately consumes
+ approvals meant for Token A, preventing legitimate transfers.
+3. **Rebinding hazard** — stale approvals survive an unbind/rebind cycle and can be
+ consumed by a new token.
+
+### Assessment
+
+Valid and actionable. The exploit requires no elevated privilege beyond being an operator
+of a second bound token.
+
+### Fix
+
+**Commit:** `2e41c72`
+
+Single-token binding is enforced by overriding `bindToken` in
+`RuleConditionalTransferLightBase`:
+
+```solidity
+function bindToken(address token) public override onlyComplianceManager {
+ require(getTokenBound() == address(0), RuleConditionalTransferLight_TokenAlreadyBound());
+ _bindToken(token);
+}
+```
+
+A second `bindToken` call now reverts with `RuleConditionalTransferLight_TokenAlreadyBound`.
+To migrate to a new token the compliance manager must first call `unbindToken`.
+
+This eliminates vectors 1 and 2 entirely. Vector 3 (stale approvals after an explicit
+unbind/rebind) remains a conscious operator decision — the operator who controls rebinding
+also controls approvals — and is documented in NatSpec on `bindToken`.
+
+The error `RuleConditionalTransferLight_TokenAlreadyBound` was added to
+`RuleConditionalTransferLightInvariantStorage`. Tests added:
+`testBindToken_RevertsIfAlreadyBound` and `testBindToken_RevertsForUnauthorizedCaller`.
+
+As a follow-up refactor (commit `7e3abb2`) the base contract was split into
+`RuleConditionalTransferLightApprovalBase` (pure approval state machine) and
+`RuleConditionalTransferLightBase` (ERC-3643 / IRule compliance integration). The
+`bindToken` guard and `_authorizeTransferExecution` were consolidated into the base to
+eliminate duplication between the AccessControl and Ownable2Step variants.
+`RuleConditionalTransferLightOwnable2Step` was also updated to inherit
+`ERC3643ComplianceModule` for consistency.
+
+---
+
+## M1 — Incomplete `supportsInterface` breaks ERC-165 discovery
+
+**Severity:** Medium | **Confidence:** High | **Verdict: Fixed**
+
+### Finding
+
+`RuleTransferValidation.supportsInterface` only declared `type(IRule).interfaceId` and
+`RuleInterfaceId.IRULE_INTERFACE_ID`, omitting `IERC165`, `IERC1404`, `IERC1404Extend`,
+`IERC3643ComplianceRead`, and `IERC7551Compliance`.
+
+`RuleConditionalTransferLight.supportsInterface` delegated to
+`AccessControlEnumerable.supportsInterface` (covering `IERC165`, `IAccessControl`,
+`IAccessControlEnumerable`) but omitted `IERC1404`, `IERC1404Extend`,
+`IERC3643ComplianceRead`, `IERC7551Compliance`, and `IERC3643IComplianceContract`.
+
+Silent `false` responses from `supportsInterface` cause integration failures or silent
+enforcement bypasses in tools and front-ends that use ERC-165 introspection to verify
+rule capabilities before wiring them.
+
+### Assessment
+
+Valid. The gap is directly observable from source. `type(IFoo).interfaceId` in Solidity
+only XORs selectors defined directly on `IFoo` and does **not** include selectors from
+inherited interfaces — a subtle but critical point for hierarchical compliance interfaces.
+
+### Fix
+
+**Commit:** `5500a74` (initial fix) — follow-up additions below.
+
+Pre-computed library constants from CMTAT are used in place of raw `type(X).interfaceId`
+calls:
+
+- `ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID` (`0x78a8de7d`) — covers the full
+ ERC-1404 / ERC-1404-Extend compliance interface family
+- `RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID` (`0x20c49ce7`) — covers `IRuleEngine`
+- `RuleInterfaceId.IRULE_INTERFACE_ID` (`0x2497d6cb`) — covers `IRule`
+
+Two further interfaces were added as follow-up:
+
+- `type(IERC7551Compliance).interfaceId` (`0x7157797f`) — single selector
+ `canTransferFrom(address,address,address,uint256)`; safe to use `type(X).interfaceId`
+ directly because `IERC7551Compliance` defines exactly one function.
+- For **validation rules** (`RuleTransferValidation` and all subclasses):
+ `type(IERC3643IComplianceContract).interfaceId` — single selector
+ `transferred(address,address,uint256)`; also safe to use directly.
+- For **`RuleConditionalTransferLight`** and **`RuleConditionalTransferLightOwnable2Step`**:
+ instead of the narrow `IERC3643IComplianceContract`, the full ERC-3643 `ICompliance`
+ interface ID is advertised via the flat mock `IERC3643ComplianceFull`
+ (`src/mocks/IERC3643ComplianceFull.sol`, `0x3144991c`). These contracts implement all
+ eight `ICompliance` functions (`bindToken`, `unbindToken`, `isTokenBound`,
+ `getTokenBound`, `canTransfer`, `transferred`, `created`, `destroyed`). Using
+ `type(IERC3643Compliance).interfaceId` directly would be wrong because it only XORs
+ the seven selectors defined directly on `IERC3643Compliance`, missing `canTransfer`
+ and `transferred` which come from parent interfaces. The flat mock redeclares all eight
+ so the XOR is correct.
+
+Final state of each `supportsInterface`:
+
+**`RuleTransferValidation`** (cascades to all validation rules):
+
+```solidity
+function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
+ return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643IComplianceContract).interfaceId;
+}
+```
+
+**`RuleConditionalTransferLight`**:
+
+```solidity
+function supportsInterface(bytes4 interfaceId)
+ public view virtual override(AccessControlEnumerable, IERC165) returns (bool)
+{
+ return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643ComplianceFull).interfaceId
+ || AccessControlEnumerable.supportsInterface(interfaceId);
+}
+```
+
+**`RuleConditionalTransferLightOwnable2Step`**:
+
+```solidity
+function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
+ return interfaceId == type(IERC165).interfaceId
+ || interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643ComplianceFull).interfaceId;
+}
+```
+
+The convention is now documented in `CLAUDE.md` and `AGENTS.md`:
+> `type(IFoo).interfaceId` only XORs selectors defined directly on `IFoo`. Always use
+> pre-computed library constants. If no constant exists, define a flat mock interface
+> that redeclares the full inheritance tree and use `type(IFooFlattened).interfaceId`.
+
+---
+
+## I1 — RuleERC2980 docs omit frozen spender on `transferFrom`
+
+**Severity:** Info | **Confidence:** High | **Verdict: Fixed (doc only)**
+
+### Finding
+
+`RuleERC2980Base._detectTransferRestrictionFrom` correctly returns
+`CODE_ADDRESS_SPENDER_IS_FROZEN` (code 62) when `_isFrozen(spender)` is true. However,
+the README, `AGENTS.md`, and `CLAUDE.md` described the frozenlist as blocking only
+`from` and `to`:
+
+> "frozen addresses are completely blocked — they can neither send nor receive tokens"
+
+The spender path for `transferFrom` was never mentioned, causing integrators to not
+anticipate that freezing an exchange or escrow address also blocks its `transferFrom`
+delegation.
+
+### Assessment
+
+Valid — code is correct, documentation is incomplete. No security vulnerability: the
+behaviour is more restrictive (safer) than documented, so no funds can be stolen, only
+unexpected reverts.
+
+### Fix
+
+**Commit:** `8926e0a`
+
+Documentation updated in `README.md`, `AGENTS.md`, and `CLAUDE.md`:
+
+> "Frozen addresses are completely blocked — they can neither send nor receive tokens.
+> Additionally, a frozen address acting as a `transferFrom` spender will have the
+> transfer rejected (code 62), even if `from` and `to` are not frozen."
+
+The `RuleERC2980` summary table row was updated to:
+
+> "ERC-2980 Swiss Compliant rule: whitelist (recipient-only) + frozenlist (blocks
+> sender, recipient, **and spender for `transferFrom`**); frozenlist takes priority."
+
+---
+
+## I2 — `hasRole` override: admin implicitly passes all role checks
+
+**Severity:** Info | **Confidence:** High | **Verdict: Fixed (doc only)**
+
+### Finding
+
+`AccessControlModuleStandalone.hasRole` overrides the OpenZeppelin implementation so that
+any account holding `DEFAULT_ADMIN_ROLE` returns `true` for every role check:
+
+```solidity
+if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
+ return true;
+}
+```
+
+This diverges from standard OpenZeppelin semantics where `DEFAULT_ADMIN_ROLE` only
+controls who can grant/revoke other roles. Consequences noted by the auditor:
+
+- `grantRole` to a default admin is a no-op — `_grantRole` skips storage and no
+ `RoleGranted` event is emitted; the admin is absent from enumeration.
+- `revokeRole` / `renounceRole` emit `RoleRevoked` and clear storage, but `hasRole`
+ continues to return `true`. Effective access is unchanged.
+- Off-chain monitoring relying on events or enumerable queries will incorrectly believe
+ the admin lost a role.
+
+### Assessment
+
+**Intentional by design — no code change.** The OpenZeppelin `DEFAULT_ADMIN_ROLE` holder
+can already grant itself any role at any time. Treating it as implicitly holding all roles
+removes unnecessary ceremony and simplifies access management for regulated token issuers.
+The misleading event and enumeration behaviour is acknowledged and documented.
+
+### Fix
+
+**Commit:** `769ec2d`
+
+A dedicated sub-section added to `README.md` under *Access Control* documenting:
+
+- The intentional `hasRole` override and its rationale.
+- `grantRole` no-op behaviour and enumeration absence for admin accounts.
+- `revokeRole` / `renounceRole` misleading semantics; `DEFAULT_ADMIN_ROLE` itself must be
+ revoked to fully remove access.
+- Recommendation for off-chain tooling to use `hasRole` queries rather than role events
+ or enumeration.
+
+**Possible future improvement:** introduce a `hasPermission` helper alongside a dedicated
+`onlyRoleOrAdmin` modifier, keeping `hasRole` standard (no override) while preserving the
+admin bypass only where explicitly needed:
+
+```solidity
+function hasPermission(bytes32 role, address account) public view returns (bool) {
+ return AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)
+ || AccessControl.hasRole(role, account);
+}
+
+modifier onlyRoleOrAdmin(bytes32 role) {
+ require(hasPermission(role, _msgSender()), ...);
+ _;
+}
+```
+
+This would restore event and enumeration consistency without changing the effective access
+model.
diff --git a/doc/security/audits/tools/v0.2.0/ackee-wake-arenav0.2.0.pdf b/doc/security/audits/tools/v0.2.0/ackee-wake-arenav0.2.0.pdf
new file mode 100644
index 0000000..e121299
Binary files /dev/null and b/doc/security/audits/tools/v0.2.0/ackee-wake-arenav0.2.0.pdf differ
diff --git a/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md b/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md
index 7d7d7ae..49a1f02 100644
--- a/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md
+++ b/doc/security/audits/tools/v0.2.0/aderyn-report-feedback.md
@@ -26,7 +26,7 @@ This library implements compliance rules for regulated security tokens (CMTAT /
## L-2: Unsafe ERC20 Operation
-**Verdict: Acknowledged — low impact**
+**Verdict: Fixed (patched in v0.3.0)**
Flagged location: `RuleConditionalTransferLightBase.sol` line 59:
@@ -35,7 +35,8 @@ bool success = IERC20(token).transferFrom(from, to, value);
require(success, RuleConditionalTransferLight_TransferFailed());
```
-The return value **is** explicitly checked with `require`. Aderyn flags any direct `.transferFrom` call that does not use `SafeERC20`, but the concern for `SafeERC20` is tokens that return no value (e.g. USDT on mainnet). The token bound to this rule is expected to be a CMTAT-compatible token, which correctly returns a `bool`. The check is already present, so the risk is negligible. `SafeERC20` could be adopted for defence-in-depth; recorded as a potential future hardening item.
+Originally, the return value was explicitly checked with `require`, and the residual risk was considered low for CMTAT-compatible tokens.
+This finding has now been patched in `v0.3.0`: `RuleConditionalTransferLightBase.approveAndTransferIfAllowed` uses OpenZeppelin `SafeERC20.safeTransferFrom`, which safely handles non-standard ERC-20 return behavior.
---
@@ -116,7 +117,7 @@ All flagged loops perform `EnumerableSet.add` / `EnumerableSet.remove` calls, ea
| ID | Title | Verdict |
|---|---|---|
| L-1 | Centralization Risk | Acknowledged — by design |
-| L-2 | Unsafe ERC20 Operation | Acknowledged — low impact |
+| L-2 | Unsafe ERC20 Operation | Fixed (patched in v0.3.0) |
| L-3 | Unspecific Solidity Pragma | Acknowledged — by design |
| L-4 | Address State Variable Set Without Checks | False positive |
| L-5 | PUSH0 Opcode | Acknowledged — not applicable |
diff --git a/doc/security/audits/tools/v0.3.0/aderyn-report-feedback.md b/doc/security/audits/tools/v0.3.0/aderyn-report-feedback.md
new file mode 100644
index 0000000..5b59433
--- /dev/null
+++ b/doc/security/audits/tools/v0.3.0/aderyn-report-feedback.md
@@ -0,0 +1,104 @@
+# Aderyn Report — Feedback
+
+Report version: `v0.3.0`
+Aderyn report: [aderyn-report.md](./aderyn-report.md)
+Feedback date: 2026-04-16
+
+This document provides the project team's assessment of each finding reported by the Aderyn static analyser. For each issue the verdict is one of:
+
+| Verdict | Meaning |
+|---|---|
+| **Acknowledged** | Known, accepted by design; no change planned. |
+| **Acknowledged — low impact** | Technically valid but the actual risk is negligible given context. |
+| **Fixed** | Resolved in the codebase. |
+| **To fix** | Will be addressed in a future revision. |
+| **False positive** | Tool mis-identification; no real issue exists. |
+
+---
+
+## L-1: Centralization Risk
+
+**Verdict: Acknowledged — by design**
+
+This library implements compliance rules for regulated security tokens (CMTAT / ERC-3643). Admin and operator roles are intentionally held by the issuer/compliance operator. This is an explicit trust assumption, not an implementation bug.
+
+---
+
+## L-2: Unspecific Solidity Pragma
+
+**Verdict: Acknowledged — by design**
+
+The repository intentionally uses `pragma solidity ^0.8.20` to keep the library integrator-friendly while the project itself remains deterministic via `foundry.toml` (`solc = 0.8.34`).
+
+---
+
+## L-3: Address State Variable Set Without Checks
+
+**Verdict: False positive**
+
+Flagged location: assignment in `RuleSanctionsListBase._setSanctionListOracle`.
+
+The zero-address guard is enforced at the public boundary in `setSanctionListOracle(...)`. The internal setter accepts `address(0)` intentionally because `clearSanctionListOracle()` must disable the oracle.
+
+---
+
+## L-4: PUSH0 Opcode
+
+**Verdict: Acknowledged — not applicable**
+
+The project targets `evm_version = "prague"` in `foundry.toml`, and deployment targets are expected to support Shanghai+ opcodes including `PUSH0`.
+
+---
+
+## L-5: Modifier Invoked Only Once
+
+**Verdict: Acknowledged — by design (template method pattern)**
+
+Flagged modifiers (e.g., `onlyCheckSpenderManager`) are deliberate authorization wrappers over abstract `_authorize*` hooks. Inlining would weaken consistency across AccessControl and Ownable variants.
+
+---
+
+## L-6: Empty Block
+
+**Verdict: Acknowledged — by design (template method pattern / interface compliance)**
+
+Most empty blocks are `_authorize*` hook implementations where the check is provided by modifiers (`onlyRole`, `onlyOwner`).
+
+Other empty functions are intentional no-ops required by shared interfaces in rules that are read-only for specific paths.
+
+---
+
+## L-7: Costly operations inside loop
+
+**Verdict: Acknowledged — unavoidable**
+
+Flagged loops perform `EnumerableSet` insert/remove operations across batch APIs. These operations are inherently storage writes (`SSTORE`) per item, so linear gas growth is expected and unavoidable.
+
+---
+
+## L-8: Unchecked Return
+
+**Verdict: Mixed — see per-instance analysis below**
+
+| Instance | Assessment |
+|---|---|
+| `_grantRole(DEFAULT_ADMIN_ROLE, admin)` in `AccessControlModuleStandalone` | **Acknowledged / low impact** — constructor path; duplicate grant would simply return `false` and is not expected on fresh deployment. |
+| `_addAddresses(...)` / `_removeAddresses(...)` batch helpers | **False positive** — `void` helpers, no return value to check. |
+| `_listedAddresses.add/remove` in `RuleAddressSetInternal` single-item helpers | **False positive** — correctness guaranteed by outer pre-checks in public single-item methods. |
+| `_whitelist.add/remove` and `_frozenlist.add/remove` in `RuleERC2980Internal` single-item helpers | **False positive** — same pre-check pattern as above. |
+| `_addWhitelistAddresses` / `_removeWhitelistAddresses` / `_addFrozenlistAddresses` / `_removeFrozenlistAddresses` | **False positive** — batch helper path, no unchecked boolean return at API boundary. |
+
+---
+
+## Summary
+
+| ID | Title | Verdict |
+|---|---|---|
+| L-1 | Centralization Risk | Acknowledged — by design |
+| L-2 | Unspecific Solidity Pragma | Acknowledged — by design |
+| L-3 | Address State Variable Set Without Checks | False positive |
+| L-4 | PUSH0 Opcode | Acknowledged — not applicable |
+| L-5 | Modifier Invoked Only Once | Acknowledged — by design |
+| L-6 | Empty Block | Acknowledged — by design |
+| L-7 | Costly operations inside loop | Acknowledged — unavoidable |
+| L-8 | Unchecked Return | Mixed (majority false positives) |
diff --git a/doc/security/audits/tools/v0.3.0/aderyn-report.md b/doc/security/audits/tools/v0.3.0/aderyn-report.md
new file mode 100644
index 0000000..8f3b887
--- /dev/null
+++ b/doc/security/audits/tools/v0.3.0/aderyn-report.md
@@ -0,0 +1,1473 @@
+# Aderyn Analysis Report
+
+This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
+# Table of Contents
+
+- [Summary](#summary)
+ - [Files Summary](#files-summary)
+ - [Files Details](#files-details)
+ - [Issue Summary](#issue-summary)
+- [Low Issues](#low-issues)
+ - [L-1: Centralization Risk](#l-1-centralization-risk)
+ - [L-2: Unspecific Solidity Pragma](#l-2-unspecific-solidity-pragma)
+ - [L-3: Address State Variable Set Without Checks](#l-3-address-state-variable-set-without-checks)
+ - [L-4: PUSH0 Opcode](#l-4-push0-opcode)
+ - [L-5: Modifier Invoked Only Once](#l-5-modifier-invoked-only-once)
+ - [L-6: Empty Block](#l-6-empty-block)
+ - [L-7: Costly operations inside loop](#l-7-costly-operations-inside-loop)
+ - [L-8: Unchecked Return](#l-8-unchecked-return)
+
+
+# Summary
+
+## Files Summary
+
+| Key | Value |
+| --- | --- |
+| .sol Files | 54 |
+| Total nSLOC | 2235 |
+
+
+## Files Details
+
+| Filepath | nSLOC |
+| --- | --- |
+| src/modules/AccessControlModuleStandalone.sol | 24 |
+| src/modules/MetaTxModuleStandalone.sol | 6 |
+| src/modules/VersionModule.sol | 8 |
+| src/rules/interfaces/IAddressList.sol | 15 |
+| src/rules/interfaces/IERC2980.sol | 5 |
+| src/rules/interfaces/IERC7943NonFungibleCompliance.sol | 19 |
+| src/rules/interfaces/IIdentityRegistry.sol | 7 |
+| src/rules/interfaces/ISanctionsList.sol | 4 |
+| src/rules/interfaces/ITotalSupply.sol | 4 |
+| src/rules/interfaces/ITransferContext.sol | 22 |
+| src/rules/operation/RuleConditionalTransferLight.sol | 29 |
+| src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 23 |
+| src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol | 57 |
+| src/rules/operation/abstract/RuleConditionalTransferLightBase.sol | 123 |
+| src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 18 |
+| src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | 66 |
+| src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 39 |
+| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol | 7 |
+| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | 14 |
+| src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 15 |
+| src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol | 79 |
+| src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | 30 |
+| src/rules/validation/abstract/base/RuleBlacklistBase.sol | 100 |
+| src/rules/validation/abstract/base/RuleERC2980Base.sol | 220 |
+| src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol | 109 |
+| src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | 90 |
+| src/rules/validation/abstract/base/RuleSanctionsListBase.sol | 108 |
+| src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol | 52 |
+| src/rules/validation/abstract/base/RuleWhitelistBase.sol | 70 |
+| src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | 145 |
+| src/rules/validation/abstract/core/RuleNFTAdapter.sol | 111 |
+| src/rules/validation/abstract/core/RuleTransferValidation.sol | 70 |
+| src/rules/validation/abstract/core/RuleWhitelistShared.sol | 49 |
+| src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 16 |
+| src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 13 |
+| src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 18 |
+| src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol | 4 |
+| src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol | 9 |
+| src/rules/validation/deployment/RuleBlacklist.sol | 33 |
+| src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 20 |
+| src/rules/validation/deployment/RuleERC2980.sol | 33 |
+| src/rules/validation/deployment/RuleERC2980Ownable2Step.sol | 24 |
+| src/rules/validation/deployment/RuleIdentityRegistry.sol | 22 |
+| src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol | 8 |
+| src/rules/validation/deployment/RuleMaxTotalSupply.sol | 22 |
+| src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol | 11 |
+| src/rules/validation/deployment/RuleSanctionsList.sol | 34 |
+| src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | 23 |
+| src/rules/validation/deployment/RuleSpenderWhitelist.sol | 34 |
+| src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol | 23 |
+| src/rules/validation/deployment/RuleWhitelist.sol | 35 |
+| src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol | 24 |
+| src/rules/validation/deployment/RuleWhitelistWrapper.sol | 63 |
+| src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 28 |
+| **Total** | **2235** |
+
+
+## Issue Summary
+
+| Category | No. of Issues |
+| --- | --- |
+| High | 0 |
+| Low | 8 |
+
+
+# Low Issues
+
+## L-1: Centralization Risk
+
+Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.
+
+46 Found Instances
+
+
+- Found in src/modules/AccessControlModuleStandalone.sol [Line: 10](src/modules/AccessControlModuleStandalone.sol#L10)
+
+ ```solidity
+ abstract contract AccessControlModuleStandalone is AccessControlEnumerable {
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 52](src/rules/operation/RuleConditionalTransferLight.sol#L52)
+
+ ```solidity
+ function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 54](src/rules/operation/RuleConditionalTransferLight.sol#L54)
+
+ ```solidity
+ function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 18](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L18)
+
+ ```solidity
+ contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step {
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 42](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L42)
+
+ ```solidity
+ function _authorizeTransferApproval() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 44](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L44)
+
+ ```solidity
+ function _onlyComplianceManager() internal virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 47](src/rules/validation/deployment/RuleBlacklist.sol#L47)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 49](src/rules/validation/deployment/RuleBlacklist.sol#L49)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 14](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L14)
+
+ ```solidity
+ contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 25](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L25)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 27](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L27)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 65](src/rules/validation/deployment/RuleERC2980.sol#L65)
+
+ ```solidity
+ function _authorizeWhitelistAdd() internal view virtual override onlyRole(WHITELIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 67](src/rules/validation/deployment/RuleERC2980.sol#L67)
+
+ ```solidity
+ function _authorizeWhitelistRemove() internal view virtual override onlyRole(WHITELIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 69](src/rules/validation/deployment/RuleERC2980.sol#L69)
+
+ ```solidity
+ function _authorizeFrozenlistAdd() internal view virtual override onlyRole(FROZENLIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 71](src/rules/validation/deployment/RuleERC2980.sol#L71)
+
+ ```solidity
+ function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 14](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L14)
+
+ ```solidity
+ contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 33](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L33)
+
+ ```solidity
+ function _authorizeWhitelistAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 35](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L35)
+
+ ```solidity
+ function _authorizeWhitelistRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 37](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L37)
+
+ ```solidity
+ function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 39](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L39)
+
+ ```solidity
+ function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistry.sol [Line: 43](src/rules/validation/deployment/RuleIdentityRegistry.sol#L43)
+
+ ```solidity
+ function _authorizeIdentityRegistryManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol [Line: 12](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12)
+
+ ```solidity
+ contract RuleIdentityRegistryOwnable2Step is RuleIdentityRegistryBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol [Line: 23](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L23)
+
+ ```solidity
+ function _authorizeIdentityRegistryManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupply.sol [Line: 47](src/rules/validation/deployment/RuleMaxTotalSupply.sol#L47)
+
+ ```solidity
+ function _authorizeMaxTotalSupplyManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol [Line: 12](src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol#L12)
+
+ ```solidity
+ contract RuleMaxTotalSupplyOwnable2Step is RuleMaxTotalSupplyBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol [Line: 26](src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol#L26)
+
+ ```solidity
+ function _authorizeMaxTotalSupplyManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsList.sol [Line: 49](src/rules/validation/deployment/RuleSanctionsList.sol#L49)
+
+ ```solidity
+ function _authorizeSanctionListManager() internal view virtual override onlyRole(SANCTIONLIST_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol [Line: 15](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L15)
+
+ ```solidity
+ contract RuleSanctionsListOwnable2Step is RuleSanctionsListBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol [Line: 29](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L29)
+
+ ```solidity
+ function _authorizeSanctionListManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 44](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L44)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 46](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L46)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 14](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L14)
+
+ ```solidity
+ contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 28](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L28)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 30](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L30)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 62](src/rules/validation/deployment/RuleWhitelist.sol#L62)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 64](src/rules/validation/deployment/RuleWhitelist.sol#L64)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 66](src/rules/validation/deployment/RuleWhitelist.sol#L66)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 14](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L14)
+
+ ```solidity
+ contract RuleWhitelistOwnable2Step is RuleWhitelistBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 34](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L34)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 36](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L36)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 38](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L38)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 60](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L60)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 65](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L65)
+
+ ```solidity
+ function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 15](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L15)
+
+ ```solidity
+ contract RuleWhitelistWrapperOwnable2Step is RuleWhitelistWrapperBase, Ownable2Step {
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 32](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L32)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 37](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L37)
+
+ ```solidity
+ function _onlyRulesManager() internal view virtual override onlyOwner {}
+ ```
+
+
+
+
+
+## L-2: Unspecific Solidity Pragma
+
+Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`
+
+54 Found Instances
+
+
+- Found in src/modules/AccessControlModuleStandalone.sol [Line: 3](src/modules/AccessControlModuleStandalone.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/modules/MetaTxModuleStandalone.sol [Line: 3](src/modules/MetaTxModuleStandalone.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/modules/VersionModule.sol [Line: 2](src/modules/VersionModule.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IAddressList.sol [Line: 2](src/rules/interfaces/IAddressList.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IERC2980.sol [Line: 2](src/rules/interfaces/IERC2980.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IERC7943NonFungibleCompliance.sol [Line: 3](src/rules/interfaces/IERC7943NonFungibleCompliance.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IIdentityRegistry.sol [Line: 3](src/rules/interfaces/IIdentityRegistry.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ISanctionsList.sol [Line: 3](src/rules/interfaces/ISanctionsList.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ITotalSupply.sol [Line: 2](src/rules/interfaces/ITotalSupply.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ITransferContext.sol [Line: 2](src/rules/interfaces/ITransferContext.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 2](src/rules/operation/RuleConditionalTransferLight.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 2](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightBase.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol [Line: 2](src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 2](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 2](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol [Line: 2](src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleBlacklistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleBlacklistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 2](src/rules/validation/abstract/base/RuleERC2980Base.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol [Line: 2](src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol [Line: 2](src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSanctionsListBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSanctionsListBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol [Line: 3](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleNFTAdapter.sol [Line: 2](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleTransferValidation.sol [Line: 3](src/rules/validation/abstract/core/RuleTransferValidation.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleWhitelistShared.sol [Line: 2](src/rules/validation/abstract/core/RuleWhitelistShared.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 3](src/rules/validation/deployment/RuleBlacklist.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 2](src/rules/validation/deployment/RuleERC2980.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 2](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistry.sol [Line: 2](src/rules/validation/deployment/RuleIdentityRegistry.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupply.sol [Line: 2](src/rules/validation/deployment/RuleMaxTotalSupply.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsList.sol [Line: 2](src/rules/validation/deployment/RuleSanctionsList.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleWhitelist.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 3](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 3](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+
+
+
+
+## L-3: Address State Variable Set Without Checks
+
+Check for `address(0)` when assigning values to address state variables.
+
+1 Found Instances
+
+
+- Found in src/rules/validation/abstract/base/RuleSanctionsListBase.sol [Line: 146](src/rules/validation/abstract/base/RuleSanctionsListBase.sol#L146)
+
+ ```solidity
+ sanctionsList = sanctionContractOracle_;
+ ```
+
+
+
+
+
+## L-4: PUSH0 Opcode
+
+Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.
+
+54 Found Instances
+
+
+- Found in src/modules/AccessControlModuleStandalone.sol [Line: 3](src/modules/AccessControlModuleStandalone.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/modules/MetaTxModuleStandalone.sol [Line: 3](src/modules/MetaTxModuleStandalone.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/modules/VersionModule.sol [Line: 2](src/modules/VersionModule.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IAddressList.sol [Line: 2](src/rules/interfaces/IAddressList.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IERC2980.sol [Line: 2](src/rules/interfaces/IERC2980.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IERC7943NonFungibleCompliance.sol [Line: 3](src/rules/interfaces/IERC7943NonFungibleCompliance.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/IIdentityRegistry.sol [Line: 3](src/rules/interfaces/IIdentityRegistry.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ISanctionsList.sol [Line: 3](src/rules/interfaces/ISanctionsList.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ITotalSupply.sol [Line: 2](src/rules/interfaces/ITotalSupply.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/interfaces/ITransferContext.sol [Line: 2](src/rules/interfaces/ITransferContext.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 2](src/rules/operation/RuleConditionalTransferLight.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 2](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightBase.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol [Line: 2](src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol [Line: 2](src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 2](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol [Line: 3](src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 2](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol [Line: 2](src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleBlacklistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleBlacklistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 2](src/rules/validation/abstract/base/RuleERC2980Base.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol [Line: 2](src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol [Line: 2](src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSanctionsListBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSanctionsListBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 2](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol [Line: 3](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleNFTAdapter.sol [Line: 2](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleTransferValidation.sol [Line: 3](src/rules/validation/abstract/core/RuleTransferValidation.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/core/RuleWhitelistShared.sol [Line: 2](src/rules/validation/abstract/core/RuleWhitelistShared.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol [Line: 3](src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSharedInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol [Line: 2](src/rules/validation/abstract/invariant/RuleSpenderWhitelistInvariantStorage.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 3](src/rules/validation/deployment/RuleBlacklist.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 2](src/rules/validation/deployment/RuleERC2980.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 2](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistry.sol [Line: 2](src/rules/validation/deployment/RuleIdentityRegistry.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupply.sol [Line: 2](src/rules/validation/deployment/RuleMaxTotalSupply.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsList.sol [Line: 2](src/rules/validation/deployment/RuleSanctionsList.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 2](src/rules/validation/deployment/RuleWhitelist.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 2](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L2)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 3](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 3](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L3)
+
+ ```solidity
+ pragma solidity ^0.8.20;
+ ```
+
+
+
+
+
+## L-5: Modifier Invoked Only Once
+
+Consider removing the modifier or inlining the logic into the calling function.
+
+2 Found Instances
+
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistBase.sol [Line: 55](src/rules/validation/abstract/base/RuleWhitelistBase.sol#L55)
+
+ ```solidity
+ modifier onlyCheckSpenderManager() {
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol [Line: 39](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L39)
+
+ ```solidity
+ modifier onlyCheckSpenderManager() {
+ ```
+
+
+
+
+
+## L-6: Empty Block
+
+Consider removing empty blocks.
+
+38 Found Instances
+
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 52](src/rules/operation/RuleConditionalTransferLight.sol#L52)
+
+ ```solidity
+ function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLight.sol [Line: 54](src/rules/operation/RuleConditionalTransferLight.sol#L54)
+
+ ```solidity
+ function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 42](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L42)
+
+ ```solidity
+ function _authorizeTransferApproval() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol [Line: 44](src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol#L44)
+
+ ```solidity
+ function _onlyComplianceManager() internal virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 38](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L38)
+
+ ```solidity
+ function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol [Line: 77](src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol#L77)
+
+ ```solidity
+ function _transferred(address, address, uint256) internal view virtual override {
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 47](src/rules/validation/deployment/RuleBlacklist.sol#L47)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklist.sol [Line: 49](src/rules/validation/deployment/RuleBlacklist.sol#L49)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 25](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L25)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol [Line: 27](src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol#L27)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 65](src/rules/validation/deployment/RuleERC2980.sol#L65)
+
+ ```solidity
+ function _authorizeWhitelistAdd() internal view virtual override onlyRole(WHITELIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 67](src/rules/validation/deployment/RuleERC2980.sol#L67)
+
+ ```solidity
+ function _authorizeWhitelistRemove() internal view virtual override onlyRole(WHITELIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 69](src/rules/validation/deployment/RuleERC2980.sol#L69)
+
+ ```solidity
+ function _authorizeFrozenlistAdd() internal view virtual override onlyRole(FROZENLIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980.sol [Line: 71](src/rules/validation/deployment/RuleERC2980.sol#L71)
+
+ ```solidity
+ function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 33](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L33)
+
+ ```solidity
+ function _authorizeWhitelistAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 35](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L35)
+
+ ```solidity
+ function _authorizeWhitelistRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 37](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L37)
+
+ ```solidity
+ function _authorizeFrozenlistAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleERC2980Ownable2Step.sol [Line: 39](src/rules/validation/deployment/RuleERC2980Ownable2Step.sol#L39)
+
+ ```solidity
+ function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistry.sol [Line: 43](src/rules/validation/deployment/RuleIdentityRegistry.sol#L43)
+
+ ```solidity
+ function _authorizeIdentityRegistryManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol [Line: 23](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L23)
+
+ ```solidity
+ function _authorizeIdentityRegistryManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupply.sol [Line: 47](src/rules/validation/deployment/RuleMaxTotalSupply.sol#L47)
+
+ ```solidity
+ function _authorizeMaxTotalSupplyManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol [Line: 26](src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol#L26)
+
+ ```solidity
+ function _authorizeMaxTotalSupplyManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsList.sol [Line: 49](src/rules/validation/deployment/RuleSanctionsList.sol#L49)
+
+ ```solidity
+ function _authorizeSanctionListManager() internal view virtual override onlyRole(SANCTIONLIST_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol [Line: 29](src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol#L29)
+
+ ```solidity
+ function _authorizeSanctionListManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 44](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L44)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelist.sol [Line: 46](src/rules/validation/deployment/RuleSpenderWhitelist.sol#L46)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 28](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L28)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol [Line: 30](src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol#L30)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 62](src/rules/validation/deployment/RuleWhitelist.sol#L62)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 64](src/rules/validation/deployment/RuleWhitelist.sol#L64)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelist.sol [Line: 66](src/rules/validation/deployment/RuleWhitelist.sol#L66)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 34](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L34)
+
+ ```solidity
+ function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 36](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L36)
+
+ ```solidity
+ function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol [Line: 38](src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol#L38)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 60](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L60)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapper.sol [Line: 65](src/rules/validation/deployment/RuleWhitelistWrapper.sol#L65)
+
+ ```solidity
+ function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 32](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L32)
+
+ ```solidity
+ function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ ```
+
+- Found in src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol [Line: 37](src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol#L37)
+
+ ```solidity
+ function _onlyRulesManager() internal view virtual override onlyOwner {}
+ ```
+
+
+
+
+
+## L-7: Costly operations inside loop
+
+Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
+
+6 Found Instances
+
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 39](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L39)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToAdd.length; ++i) {
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 61](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L61)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToRemove.length; ++i) {
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 37](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L37)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToAdd.length; ++i) {
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 50](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L50)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToRemove.length; ++i) {
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 83](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L83)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToAdd.length; ++i) {
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 96](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L96)
+
+ ```solidity
+ for (uint256 i = 0; i < addressesToRemove.length; ++i) {
+ ```
+
+
+
+
+
+## L-8: Unchecked Return
+
+Function returns a value but it is ignored. Consider checking the return value.
+
+13 Found Instances
+
+
+- Found in src/modules/AccessControlModuleStandalone.sol [Line: 32](src/modules/AccessControlModuleStandalone.sol#L32)
+
+ ```solidity
+ _grantRole(DEFAULT_ADMIN_ROLE, admin);
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol [Line: 66](src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L66)
+
+ ```solidity
+ _addAddresses(targetAddresses);
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol [Line: 78](src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol#L78)
+
+ ```solidity
+ _removeAddresses(targetAddresses);
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 75](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L75)
+
+ ```solidity
+ _listedAddresses.add(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol [Line: 83](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L83)
+
+ ```solidity
+ _listedAddresses.remove(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 60](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L60)
+
+ ```solidity
+ _whitelist.add(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 64](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L64)
+
+ ```solidity
+ _whitelist.remove(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 106](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L106)
+
+ ```solidity
+ _frozenlist.add(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol [Line: 110](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L110)
+
+ ```solidity
+ _frozenlist.remove(targetAddress);
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 86](src/rules/validation/abstract/base/RuleERC2980Base.sol#L86)
+
+ ```solidity
+ _addWhitelistAddresses(targetAddresses);
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 95](src/rules/validation/abstract/base/RuleERC2980Base.sol#L95)
+
+ ```solidity
+ _removeWhitelistAddresses(targetAddresses);
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 136](src/rules/validation/abstract/base/RuleERC2980Base.sol#L136)
+
+ ```solidity
+ _addFrozenlistAddresses(targetAddresses);
+ ```
+
+- Found in src/rules/validation/abstract/base/RuleERC2980Base.sol [Line: 145](src/rules/validation/abstract/base/RuleERC2980Base.sol#L145)
+
+ ```solidity
+ _removeFrozenlistAddresses(targetAddresses);
+ ```
+
+
+
+
+
diff --git a/doc/security/audits/tools/v0.3.0/slither-report-feedback.md b/doc/security/audits/tools/v0.3.0/slither-report-feedback.md
new file mode 100644
index 0000000..24d2efe
--- /dev/null
+++ b/doc/security/audits/tools/v0.3.0/slither-report-feedback.md
@@ -0,0 +1,94 @@
+# Slither Report — Feedback
+
+Report version: `v0.3.0`
+Slither report: [slither-report.md](./slither-report.md)
+Feedback date: 2026-04-16
+
+Verdicts:
+
+| Verdict | Meaning |
+|---|---|
+| **Acknowledged** | Known, accepted by design; no change planned. |
+| **Acknowledged — low impact** | Technically valid but actual risk is negligible given context. |
+| **Fixed** | Resolved in the codebase. |
+| **To fix** | Will be addressed in a future revision. |
+| **False positive** | Tool mis-identification; no real issue exists. |
+| **Out of scope** | Reported location is in dependency code outside this repository. |
+
+---
+
+## arbitrary-send-erc20 (High) — ID-0
+
+**Verdict: False positive**
+
+Flagged function: `RuleConditionalTransferLightBase.approveAndTransferIfAllowed(...)`.
+
+`from` is a parameter, but this is not an arbitrary-drain primitive because:
+
+1. Function access is restricted by `onlyTransferApprover`.
+2. The contract checks `allowance(from, address(this)) >= value` before transfer.
+3. The call path is part of a deliberate compliance workflow and executes against the single bound token.
+
+Using `SafeERC20.safeTransferFrom` does not change this authorization model; it only hardens ERC-20 return handling.
+
+---
+
+## unused-return (Medium) — ID-1 to ID-6
+
+**Verdict: False positive**
+
+Flagged calls are `EnumerableSet.add/remove` in internal single-item helpers. The external/public single-item entrypoints already perform precondition checks (present/not present), making the boolean return redundant in those internal helper implementations.
+
+---
+
+## calls-loop (Low) — ID-7 to ID-22
+
+**Verdict: Acknowledged — by design**
+
+All instances stem from `RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(...)`, which must query child whitelist rules to implement OR aggregation. External calls in this loop are intrinsic to the wrapper design.
+
+---
+
+## assembly (Informational) — ID-23
+
+**Verdict: Acknowledged — by design**
+
+`RuleConditionalTransferLightApprovalBase._transferHash(...)` uses a small, memory-safe assembly block to compute transfer tuple hash efficiently. This is intentional and bounded.
+
+---
+
+## naming-convention (Informational) — ID-24 to ID-25
+
+**Verdict: Acknowledged**
+
+`_operator` naming in `RuleERC2980Base.whitelist/frozenlist` mirrors the ERC-2980 interface naming. Keeping spec-aligned argument names is intentional.
+
+---
+
+## unindexed-event-address (Informational) — ID-26 to ID-27
+
+**Verdict: Out of scope**
+
+Both findings point to `lib/RuleEngine/src/interfaces/IERC3643Compliance.sol`, which is a dependency module under `lib/` and not maintained in this repository.
+
+---
+
+## unused-state (Informational) — ID-28 to ID-35
+
+**Verdict: False positive**
+
+All instances are `RuleNFTAdapter` selector constants reported as unused in specific concrete contracts. They are part of inherited dispatch logic and are used across adapter paths; this is a per-contract inheritance analysis limitation.
+
+---
+
+## Summary
+
+| Category | Severity | IDs | Verdict |
+|---|---|---|---|
+| arbitrary-send-erc20 | High | ID-0 | False positive |
+| unused-return | Medium | ID-1 to ID-6 | False positive |
+| calls-loop | Low | ID-7 to ID-22 | Acknowledged — by design |
+| assembly | Informational | ID-23 | Acknowledged — by design |
+| naming-convention | Informational | ID-24 to ID-25 | Acknowledged |
+| unindexed-event-address | Informational | ID-26 to ID-27 | Out of scope (lib/) |
+| unused-state | Informational | ID-28 to ID-35 | False positive |
diff --git a/doc/security/audits/tools/v0.3.0/slither-report.md b/doc/security/audits/tools/v0.3.0/slither-report.md
new file mode 100644
index 0000000..da825b5
--- /dev/null
+++ b/doc/security/audits/tools/v0.3.0/slither-report.md
@@ -0,0 +1,313 @@
+**THIS CHECKLIST IS NOT COMPLETE**. Use `--show-ignored-findings` to show all the results.
+Summary
+ - [arbitrary-send-erc20](#arbitrary-send-erc20) (1 results) (High)
+ - [unused-return](#unused-return) (6 results) (Medium)
+ - [calls-loop](#calls-loop) (16 results) (Low)
+ - [assembly](#assembly) (1 results) (Informational)
+ - [naming-convention](#naming-convention) (2 results) (Informational)
+ - [unindexed-event-address](#unindexed-event-address) (2 results) (Informational)
+ - [unused-state](#unused-state) (8 results) (Informational)
+## arbitrary-send-erc20
+Impact: High
+Confidence: High
+ - [ ] ID-0
+[RuleConditionalTransferLightBase.approveAndTransferIfAllowed(address,address,uint256)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L66-L81) uses arbitrary from in transferFrom: [IERC20(token).safeTransferFrom(from,to,value)](src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L79)
+
+src/rules/operation/abstract/RuleConditionalTransferLightBase.sol#L66-L81
+
+
+## unused-return
+Impact: Medium
+Confidence: Medium
+ - [ ] ID-1
+[RuleAddressSetInternal._removeAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L82-L84) ignores return value by [_listedAddresses.remove(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L83)
+
+src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L82-L84
+
+
+ - [ ] ID-2
+[RuleERC2980Internal._addWhitelistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L59-L61) ignores return value by [_whitelist.add(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L60)
+
+src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L59-L61
+
+
+ - [ ] ID-3
+[RuleAddressSetInternal._addAddress(address)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L74-L76) ignores return value by [_listedAddresses.add(targetAddress)](src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L75)
+
+src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol#L74-L76
+
+
+ - [ ] ID-4
+[RuleERC2980Internal._removeWhitelistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65) ignores return value by [_whitelist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L64)
+
+src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L63-L65
+
+
+ - [ ] ID-5
+[RuleERC2980Internal._addFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107) ignores return value by [_frozenlist.add(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L106)
+
+src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L105-L107
+
+
+ - [ ] ID-6
+[RuleERC2980Internal._removeFrozenlistAddress(address)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111) ignores return value by [_frozenlist.remove(targetAddress)](src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L110)
+
+src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol#L109-L111
+
+
+## calls-loop
+Impact: Low
+Confidence: Medium
+ - [ ] ID-7
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleTransferValidation.canTransfer(address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-8
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleWhitelistShared.transferred(address,address,address,uint256)
+ RuleWhitelistShared._transferredFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-9
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleWhitelistWrapperBase.isVerified(address)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-10
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleTransferValidation.detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-11
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.transferred(ITransferContext.MultiTokenTransferContext)
+ RuleWhitelistShared._transferredFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-12
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleWhitelistShared.transferred(address,address,uint256)
+ RuleWhitelistWrapperBase._transferred(address,address,uint256)
+ RuleWhitelistShared._transferred(address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-13
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.canTransferFrom(address,address,address,uint256,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-14
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleTransferValidation.detectTransferRestriction(address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-15
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.transferred(ITransferContext.FungibleTransferContext)
+ RuleWhitelistShared._transferredFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-16
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.transferred(address,address,uint256,uint256)
+ RuleWhitelistWrapperBase._transferred(address,address,uint256)
+ RuleWhitelistShared._transferred(address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-17
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleWhitelistWrapperHarnessInternal.exposedTransferredSpenderInternal(address,address,address,uint256)
+ RuleWhitelistWrapperBase._transferred(address,address,address,uint256)
+ RuleWhitelistShared._transferredFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-18
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.detectTransferRestriction(address,address,uint256,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-19
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.transferred(address,address,address,uint256,uint256)
+ RuleWhitelistShared._transferredFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-20
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.canTransfer(address,address,uint256,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-21
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleTransferValidation.canTransferFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+ - [ ] ID-22
+[RuleWhitelistWrapperBase._detectTransferRestrictionForTargets(address[])](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205) has external calls inside a loop: [isListed = IAddressList(rule(i)).areAddressesListed(targetAddress)](src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L185)
+ Calls stack containing the loop:
+ RuleNFTAdapter.detectTransferRestrictionFrom(address,address,address,uint256,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestrictionFrom(address,address,address,uint256)
+ RuleWhitelistWrapperBase._detectTransferRestriction(address,address,uint256)
+
+src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol#L174-L205
+
+
+## assembly
+Impact: Informational
+Confidence: High
+ - [ ] ID-23
+[RuleConditionalTransferLightApprovalBase._transferHash(address,address,uint256)](src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol#L86-L95) uses assembly
+ - [INLINE ASM](src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol#L88-L94)
+
+src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol#L86-L95
+
+
+## naming-convention
+Impact: Informational
+Confidence: High
+ - [ ] ID-24
+Parameter [RuleERC2980Base.frozenlist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L291) is not in mixedCase
+
+src/rules/validation/abstract/base/RuleERC2980Base.sol#L291
+
+
+ - [ ] ID-25
+Parameter [RuleERC2980Base.whitelist(address)._operator](src/rules/validation/abstract/base/RuleERC2980Base.sol#L251) is not in mixedCase
+
+src/rules/validation/abstract/base/RuleERC2980Base.sol#L251
+
+
+## unindexed-event-address
+Impact: Informational
+Confidence: High
+ - [ ] ID-26
+Event [IERC3643Compliance.TokenBound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14) has address parameters but no indexed parameters
+
+lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L14
+
+
+ - [ ] ID-27
+Event [IERC3643Compliance.TokenUnbound(address)](lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20) has address parameters but no indexed parameters
+
+lib/RuleEngine/src/interfaces/IERC3643Compliance.sol#L20
+
+
+## unused-state
+Impact: Informational
+Confidence: High
+ - [ ] ID-28
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L24)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21
+
+
+ - [ ] ID-29
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L24)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23
+
+
+ - [ ] ID-30
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L24)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25
+
+
+ - [ ] ID-31
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleIdentityRegistryOwnable2Step](src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol#L12-L24)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20
+
+
+ - [ ] ID-32
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L44)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L22-L23
+
+
+ - [ ] ID-33
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_RULE_ENGINE](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L44)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L21
+
+
+ - [ ] ID-34
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC7943_FROM](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L44)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L24-L25
+
+
+ - [ ] ID-35
+[RuleNFTAdapter.TRANSFERRED_SELECTOR_ERC3643](src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20) is never used in [RuleIdentityRegistry](src/rules/validation/deployment/RuleIdentityRegistry.sol#L14-L44)
+
+src/rules/validation/abstract/core/RuleNFTAdapter.sol#L20
+
+
diff --git a/doc/specification/RulesSpecificationv0.2.0.pdf b/doc/specification/RulesSpecificationv0.2.0.pdf
new file mode 100644
index 0000000..4356e8a
Binary files /dev/null and b/doc/specification/RulesSpecificationv0.2.0.pdf differ
diff --git a/doc/specification/cover_page.odg b/doc/specification/cover_page.odg
index 6b8293f..855eff6 100644
Binary files a/doc/specification/cover_page.odg and b/doc/specification/cover_page.odg differ
diff --git a/doc/specification/cover_page.pdf b/doc/specification/cover_page.pdf
new file mode 100644
index 0000000..0b3519c
Binary files /dev/null and b/doc/specification/cover_page.pdf differ
diff --git a/doc/surya/surya_graph/surya_graph_AccessControlModuleStandalone.sol.png b/doc/surya/surya_graph/surya_graph_AccessControlModuleStandalone.sol.png
index 2e91f28..29deed4 100644
Binary files a/doc/surya/surya_graph/surya_graph_AccessControlModuleStandalone.sol.png and b/doc/surya/surya_graph/surya_graph_AccessControlModuleStandalone.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png b/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png
index fb91b43..9f38bf3 100644
Binary files a/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png and b/doc/surya/surya_graph/surya_graph_DeploymentCoverageHarnesses.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IAddressList.sol.png b/doc/surya/surya_graph/surya_graph_IAddressList.sol.png
index c951488..0e08167 100644
Binary files a/doc/surya/surya_graph/surya_graph_IAddressList.sol.png and b/doc/surya/surya_graph/surya_graph_IAddressList.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IERC2980.sol.png b/doc/surya/surya_graph/surya_graph_IERC2980.sol.png
index 217334b..f5a4ba9 100644
Binary files a/doc/surya/surya_graph/surya_graph_IERC2980.sol.png and b/doc/surya/surya_graph/surya_graph_IERC2980.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IERC3643ComplianceFull.sol.png b/doc/surya/surya_graph/surya_graph_IERC3643ComplianceFull.sol.png
new file mode 100644
index 0000000..ca029c7
Binary files /dev/null and b/doc/surya/surya_graph/surya_graph_IERC3643ComplianceFull.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IERC7943NonFungibleCompliance.sol.png b/doc/surya/surya_graph/surya_graph_IERC7943NonFungibleCompliance.sol.png
index a7fc4e3..fb5cd4c 100644
Binary files a/doc/surya/surya_graph/surya_graph_IERC7943NonFungibleCompliance.sol.png and b/doc/surya/surya_graph/surya_graph_IERC7943NonFungibleCompliance.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IIdentityRegistry.sol.png b/doc/surya/surya_graph/surya_graph_IIdentityRegistry.sol.png
index 45f3c88..216f70e 100644
Binary files a/doc/surya/surya_graph/surya_graph_IIdentityRegistry.sol.png and b/doc/surya/surya_graph/surya_graph_IIdentityRegistry.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_ISanctionsList.sol.png b/doc/surya/surya_graph/surya_graph_ISanctionsList.sol.png
index 549f787..e66e2db 100644
Binary files a/doc/surya/surya_graph/surya_graph_ISanctionsList.sol.png and b/doc/surya/surya_graph/surya_graph_ISanctionsList.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_ITotalSupply.sol.png b/doc/surya/surya_graph/surya_graph_ITotalSupply.sol.png
index 04d1a90..8f1a033 100644
Binary files a/doc/surya/surya_graph/surya_graph_ITotalSupply.sol.png and b/doc/surya/surya_graph/surya_graph_ITotalSupply.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_ITransferContext.sol.png b/doc/surya/surya_graph/surya_graph_ITransferContext.sol.png
index 8a27cb8..276a284 100644
Binary files a/doc/surya/surya_graph/surya_graph_ITransferContext.sol.png and b/doc/surya/surya_graph/surya_graph_ITransferContext.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png b/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png
index 35781cc..c0f8f20 100644
Binary files a/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png and b/doc/surya/surya_graph/surya_graph_IdentityRegistryMock.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png b/doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png
index e066bfa..ab6da43 100644
Binary files a/doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png and b/doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png b/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png
index af13e5e..003c436 100644
Binary files a/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png and b/doc/surya/surya_graph/surya_graph_MockERC20TransferFromFalse.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png b/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png
index 7ae1874..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png and b/doc/surya/surya_graph/surya_graph_MockERC20WithTransferContext.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_MockERC721WithTransferContext.sol.png b/doc/surya/surya_graph/surya_graph_MockERC721WithTransferContext.sol.png
index 74ab93c..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_MockERC721WithTransferContext.sol.png and b/doc/surya/surya_graph/surya_graph_MockERC721WithTransferContext.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressSet.sol.png b/doc/surya/surya_graph/surya_graph_RuleAddressSet.sol.png
index d11eed5..92f6353 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleAddressSet.sol.png and b/doc/surya/surya_graph/surya_graph_RuleAddressSet.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressSetInternal.sol.png b/doc/surya/surya_graph/surya_graph_RuleAddressSetInternal.sol.png
index 92799bc..ba036a5 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleAddressSetInternal.sol.png and b/doc/surya/surya_graph/surya_graph_RuleAddressSetInternal.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressSetInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleAddressSetInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleAddressSetInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleAddressSetInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png
index 2467398..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png and b/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklistBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklistBase.sol.png
index e721253..a9c5568 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleBlacklistBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleBlacklistBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable.sol.png
deleted file mode 100644
index 767d5c9..0000000
Binary files a/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable.sol.png and /dev/null differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable2Step.sol.png
index aef0cbe..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleBlacklistOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png
deleted file mode 100644
index e166f8f..0000000
Binary files a/doc/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png and /dev/null differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png
index 2b5ab95..184ce94 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png and b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightApprovalBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightApprovalBase.sol.png
new file mode 100644
index 0000000..87a6565
Binary files /dev/null and b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightApprovalBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png
index db7e97a..851ca72 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightOwnable2Step.sol.png
index 8a6a3ad..1138317 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleConditionalTransferLightOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleERC2980.sol.png b/doc/surya/surya_graph/surya_graph_RuleERC2980.sol.png
index 389946a..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleERC2980.sol.png and b/doc/surya/surya_graph/surya_graph_RuleERC2980.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleERC2980Base.sol.png b/doc/surya/surya_graph/surya_graph_RuleERC2980Base.sol.png
index ad99fb7..553421c 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleERC2980Base.sol.png and b/doc/surya/surya_graph/surya_graph_RuleERC2980Base.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleERC2980Internal.sol.png b/doc/surya/surya_graph/surya_graph_RuleERC2980Internal.sol.png
index b759a2d..39a3907 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleERC2980Internal.sol.png and b/doc/surya/surya_graph/surya_graph_RuleERC2980Internal.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleERC2980InvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleERC2980InvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleERC2980InvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleERC2980InvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleERC2980Ownable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleERC2980Ownable2Step.sol.png
index 344ecd6..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleERC2980Ownable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleERC2980Ownable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistry.sol.png b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistry.sol.png
index 7653a0b..e1d4147 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistry.sol.png and b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistry.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryBase.sol.png
index 0cc6d5a..ff37491 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryOwnable2Step.sol.png
index 9fc978a..2740710 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleIdentityRegistryOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupply.sol.png b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupply.sol.png
index 4605ec2..75bc944 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupply.sol.png and b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupply.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyBase.sol.png
index 328cf8a..fa6c8ad 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyOwnable2Step.sol.png
index 5093934..478dd4c 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleMaxTotalSupplyOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleNFTAdapter.sol.png b/doc/surya/surya_graph/surya_graph_RuleNFTAdapter.sol.png
index 3c1ae13..3197aaa 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleNFTAdapter.sol.png and b/doc/surya/surya_graph/surya_graph_RuleNFTAdapter.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsList.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsList.sol.png
index bab51b1..9ed5b46 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSanctionsList.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSanctionsList.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsListBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsListBase.sol.png
index 3f43c31..aeea5f2 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSanctionsListBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSanctionsListBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsListInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsListInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSanctionsListInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSanctionsListInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2Step.sol.png
index c659efc..efe30a2 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png b/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png
index 4e91ef8..0bc99eb 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSanctionsListOwnable2StepHarness.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSharedInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png
index 5fc9eb1..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelist.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png
index ad790f2..2095cd9 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png
index 886371e..516bcc3 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistHarnesses.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistOwnable2Step.sol.png
index a1ef461..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleSpenderWhitelistOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleTransferValidation.sol.png b/doc/surya/surya_graph/surya_graph_RuleTransferValidation.sol.png
index d966b58..a81af27 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleTransferValidation.sol.png and b/doc/surya/surya_graph/surya_graph_RuleTransferValidation.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png b/doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png
deleted file mode 100644
index b59e0ba..0000000
Binary files a/doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png and /dev/null differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png
index cd0cfe4..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistBase.sol.png
index 9047347..49ddfce 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png
deleted file mode 100644
index 304d638..0000000
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png and /dev/null differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png
index e166f8f..5b4fa6b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable.sol.png
deleted file mode 100644
index bebcd13..0000000
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable.sol.png and /dev/null differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable2Step.sol.png
index f508aa4..e69de29 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistShared.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistShared.sol.png
index db3892c..54b5e88 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistShared.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistShared.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png
index 87b48dd..071894a 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperBase.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperBase.sol.png
index 3521d1e..07a074e 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperBase.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperBase.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperHarnessInternal.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperHarnessInternal.sol.png
index ddc2deb..ff9f52b 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperHarnessInternal.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperHarnessInternal.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperOwnable2Step.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperOwnable2Step.sol.png
index b95970a..9d1c456 100644
Binary files a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperOwnable2Step.sol.png and b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapperOwnable2Step.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_SanctionListOracle.sol.png b/doc/surya/surya_graph/surya_graph_SanctionListOracle.sol.png
index cea1cc0..aeae4da 100644
Binary files a/doc/surya/surya_graph/surya_graph_SanctionListOracle.sol.png and b/doc/surya/surya_graph/surya_graph_SanctionListOracle.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png b/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png
index 3cc02f5..9009bdf 100644
Binary files a/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png and b/doc/surya/surya_graph/surya_graph_TotalSupplyMock.sol.png differ
diff --git a/doc/surya/surya_graph/surya_graph_VersionModule.sol.png b/doc/surya/surya_graph/surya_graph_VersionModule.sol.png
index 6d3a741..bb072c9 100644
Binary files a/doc/surya/surya_graph/surya_graph_VersionModule.sol.png and b/doc/surya/surya_graph/surya_graph_VersionModule.sol.png differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_IERC3643ComplianceFull.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IERC3643ComplianceFull.sol.png
new file mode 100644
index 0000000..8c1af35
Binary files /dev/null and b/doc/surya/surya_inheritance/surya_inheritance_IERC3643ComplianceFull.sol.png differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistOwnable.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistOwnable.sol.png
deleted file mode 100644
index edde035..0000000
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistOwnable.sol.png and /dev/null differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png
deleted file mode 100644
index d521a63..0000000
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png and /dev/null differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png
index 4c9aa66..d56372a 100644
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png and b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightApprovalBase.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightApprovalBase.sol.png
new file mode 100644
index 0000000..0c43e6a
Binary files /dev/null and b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightApprovalBase.sol.png differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightBase.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightBase.sol.png
index 10ba851..bf44421 100644
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightBase.sol.png and b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightBase.sol.png differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png
deleted file mode 100644
index 9752783..0000000
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png and /dev/null differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png
deleted file mode 100644
index 7531b5e..0000000
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png and /dev/null differ
diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistOwnable.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistOwnable.sol.png
deleted file mode 100644
index 37732ca..0000000
Binary files a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistOwnable.sol.png and /dev/null differ
diff --git a/doc/surya/surya_report/surya_report_AccessControlModuleStandalone.sol.md b/doc/surya/surya_report/surya_report_AccessControlModuleStandalone.sol.md
index 6e621a8..3b9fb79 100644
--- a/doc/surya/surya_report/surya_report_AccessControlModuleStandalone.sol.md
+++ b/doc/surya/surya_report/surya_report_AccessControlModuleStandalone.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./modules/AccessControlModuleStandalone.sol | 2cc35fc3e9e22b70ad12a09380ffc25b9201f893 |
+| ./modules/AccessControlModuleStandalone.sol | 1c7c0ffeb2ce2999fb14155cf49b1bb2339cc335 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md b/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md
index 3214d4b..9d4f2b7 100644
--- a/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md
+++ b/doc/surya/surya_report/surya_report_DeploymentCoverageHarnesses.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/harness/DeploymentCoverageHarnesses.sol | efef241e157c319d20144f266ca0228a74ddb8b2 |
+| ./mocks/harness/DeploymentCoverageHarnesses.sol | 51b794406806bfd8380bb4177ab3272724702184 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable.sol.md b/doc/surya/surya_report/surya_report_IERC3643ComplianceFull.sol.md
similarity index 50%
rename from doc/surya/surya_report/surya_report_RuleBlacklistOwnable.sol.md
rename to doc/surya/surya_report/surya_report_IERC3643ComplianceFull.sol.md
index 6b969d0..9d4116b 100644
--- a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable.sol.md
+++ b/doc/surya/surya_report/surya_report_IERC3643ComplianceFull.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/RuleBlacklistOwnable.sol | 56bdd344912082ab41e3afbd87f41b3a6e9dfb72 |
+| ./mocks/IERC3643ComplianceFull.sol | 544dbc778c45d888ee9cdb28f507df53fe055edf |
### Contracts Description Table
@@ -15,13 +15,15 @@
|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
-| **RuleBlacklistOwnable** | Implementation | RuleBlacklistBase, Ownable2Step |||
-| └ | | Public ❗️ | 🛑 | RuleBlacklistBase Ownable |
-| └ | _authorizeAddressListAdd | Internal 🔒 | | |
-| └ | _authorizeAddressListRemove | Internal 🔒 | | |
-| └ | _msgSender | Internal 🔒 | | |
-| └ | _msgData | Internal 🔒 | | |
-| └ | _contextSuffixLength | Internal 🔒 | | |
+| **IERC3643ComplianceFull** | Interface | |||
+| └ | canTransfer | External ❗️ | |NO❗️ |
+| └ | transferred | External ❗️ | 🛑 |NO❗️ |
+| └ | bindToken | External ❗️ | 🛑 |NO❗️ |
+| └ | unbindToken | External ❗️ | 🛑 |NO❗️ |
+| └ | isTokenBound | External ❗️ | |NO❗️ |
+| └ | getTokenBound | External ❗️ | |NO❗️ |
+| └ | created | External ❗️ | 🛑 |NO❗️ |
+| └ | destroyed | External ❗️ | 🛑 |NO❗️ |
### Legend
diff --git a/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md b/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md
index a1695d1..85a97b1 100644
--- a/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md
+++ b/doc/surya/surya_report/surya_report_IdentityRegistryMock.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/IdentityRegistryMock.sol | 81a48dbb5b0f632020ce23003bc49e31f79e2e37 |
+| ./mocks/IdentityRegistryMock.sol | 52729f353f3783df05156fb7703e84d39b84167e |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md b/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md
index e71477c..332a4ea 100644
--- a/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md
+++ b/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./modules/MetaTxModuleStandalone.sol | c35aa26fde428024c80ea7421da7404d506606f4 |
+| ./modules/MetaTxModuleStandalone.sol | 6467a67732560062997934fc1852cd96eda1fab3 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md b/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md
index 919b4bf..397613c 100644
--- a/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md
+++ b/doc/surya/surya_report/surya_report_MockERC20TransferFromFalse.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/MockERC20TransferFromFalse.sol | 126dbf9c338c740bfbdd73b9cbc930137e96e64d |
+| ./mocks/MockERC20TransferFromFalse.sol | 7e9fe543cc9f7a8e3f6ec3b8285d70526b2639c7 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md b/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md
index bc70198..0ebab99 100644
--- a/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md
+++ b/doc/surya/surya_report/surya_report_MockERC20WithTransferContext.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/MockERC20WithTransferContext.sol | fa64b379e094097f646856ba2ea52463112c3555 |
+| ./mocks/MockERC20WithTransferContext.sol | 657e5680617872717c6a5b9e9f801c5c4594b821 |
### Contracts Description Table
@@ -19,10 +19,10 @@
| └ | | Public ❗️ | 🛑 | ERC20 |
| └ | setRule | External ❗️ | 🛑 |NO❗️ |
| └ | mint | External ❗️ | 🛑 |NO❗️ |
-| └ | transfer | Public ❗️ | 🛑 |NO❗️ |
-| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ |
| └ | transferWithContext | External ❗️ | 🛑 |NO❗️ |
| └ | transferFromWithContext | External ❗️ | 🛑 |NO❗️ |
+| └ | transfer | Public ❗️ | 🛑 |NO❗️ |
+| └ | transferFrom | Public ❗️ | 🛑 |NO❗️ |
| └ | _notifyFungible | Internal 🔒 | 🛑 | |
| └ | _notifyMultiToken | Internal 🔒 | 🛑 | |
diff --git a/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md b/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md
index 8debf0e..6a95fca 100644
--- a/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md
+++ b/doc/surya/surya_report/surya_report_MockERC721WithTransferContext.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/MockERC721WithTransferContext.sol | 93cbfe1335f8121dec4b4424973cf0a6e623fa59 |
+| ./mocks/MockERC721WithTransferContext.sol | 7f7b1da23845193ea703336af8bf0c8f4f66956d |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md b/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md
index d46c16c..5c2fcf6 100644
--- a/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleAddressSet.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | a3c3be817c875ac39b08a0c7b06b97f1d3a4c440 |
+| ./rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol | 2b2c138a17fd651aa8bc8346df863c7fc08ffeb3 |
### Contracts Description Table
@@ -17,12 +17,12 @@
||||||
| **RuleAddressSet** | Implementation | MetaTxModuleStandalone, RuleAddressSetInternal, RuleAddressSetInvariantStorage, IAddressList |||
| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone |
+| └ | _authorizeAddressListAdd | Internal 🔒 | | |
+| └ | _authorizeAddressListRemove | Internal 🔒 | | |
| └ | addAddresses | Public ❗️ | 🛑 | onlyAddressListAdd |
| └ | removeAddresses | Public ❗️ | 🛑 | onlyAddressListRemove |
| └ | addAddress | Public ❗️ | 🛑 | onlyAddressListAdd |
| └ | removeAddress | Public ❗️ | 🛑 | onlyAddressListRemove |
-| └ | _authorizeAddressListAdd | Internal 🔒 | | |
-| └ | _authorizeAddressListRemove | Internal 🔒 | | |
| └ | listedAddressCount | Public ❗️ | |NO❗️ |
| └ | contains | Public ❗️ | |NO❗️ |
| └ | isAddressListed | Public ❗️ | |NO❗️ |
diff --git a/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md b/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md
index ddfdb85..4f53607 100644
--- a/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleAddressSetInternal.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 61850ffd777b0d2df65b50258100a0bfba79765c |
+| ./rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol | 1c962935e41f98f081c56290f77322eb6787ef14 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleAddressSetInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleAddressSetInvariantStorage.sol.md
index 8109e86..677d082 100644
--- a/doc/surya/surya_report/surya_report_RuleAddressSetInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleAddressSetInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol | ab4e70b8488b96745acdd21f2ba6a47c36a129ce |
+| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol | dbb32b305ba44a039e4c3783583d5e80ec237479 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md
index e1a6f8d..cd6e0c2 100644
--- a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleBlacklist.sol | 4bf9ad173243b77e6bc78a9c870509454437fd48 |
+| ./rules/validation/deployment/RuleBlacklist.sol | 6fb955444f634508bb273ed89b3e9c793a63ddd1 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md
index 1d34304..240f9d4 100644
--- a/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleBlacklistBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleBlacklistBase.sol | ec66a18aa4908019e16c6d570202260524c44904 |
+| ./rules/validation/abstract/base/RuleBlacklistBase.sol | a9e7acac4f30169f321bcc9b36a932a8e100da63 |
### Contracts Description Table
@@ -17,13 +17,13 @@
||||||
| **RuleBlacklistBase** | Implementation | RuleAddressSet, RuleNFTAdapter, RuleBlacklistInvariantStorage |||
| └ | | Public ❗️ | 🛑 | RuleAddressSet |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
+| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | transferred | Public ❗️ | |NO❗️ |
| └ | canReturnTransferRestrictionCode | Public ❗️ | |NO❗️ |
| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
-| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _transferredFrom | Internal 🔒 | | |
diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md
index 961d7e2..bf4fe7e 100644
--- a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | d3f1c084086821a5ec13825d4f8488c552947ac6 |
+| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol | 4d408462eab6f20ab07dc32a28e324a2d872a6a1 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md
index e685d62..3b4d15f 100644
--- a/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleBlacklistOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 52a9b745423b9706c4c88fc8aee35f4d5020c176 |
+| ./rules/validation/deployment/RuleBlacklistOwnable2Step.sol | 7124f42b2a3b6352300ffdaba32b8f6ce31862bd |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md
deleted file mode 100644
index 6867c91..0000000
--- a/doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md
+++ /dev/null
@@ -1,26 +0,0 @@
-## Sūrya's Description Report
-
-### Files Description Table
-
-
-| File Name | SHA-1 Hash |
-|-------------|--------------|
-| ./rules/validation/abstract/invariant/RuleCommonInvariantStorage.sol | e7242cf88a7a7587c6cd039642c300481b90a8d6 |
-
-
-### Contracts Description Table
-
-
-| Contract | Type | Bases | | |
-|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
-| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
-||||||
-| **RuleCommonInvariantStorage** | Implementation | |||
-
-
-### Legend
-
-| Symbol | Meaning |
-|:--------:|-----------|
-| 🛑 | Function can modify state |
-| 💵 | Function is payable |
diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md
index f613b8f..bc4c64c 100644
--- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/operation/RuleConditionalTransferLight.sol | 81491b418d569b10e02f08058beea7080fb943f6 |
+| ./rules/operation/RuleConditionalTransferLight.sol | 0296e0b6f9efba3f65c654982ee5e8b8b0d6b52c |
### Contracts Description Table
@@ -15,13 +15,10 @@
|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
-| **RuleConditionalTransferLight** | Implementation | AccessControlModuleStandalone, ERC3643ComplianceModule, RuleConditionalTransferLightBase |||
+| **RuleConditionalTransferLight** | Implementation | AccessControlModuleStandalone, RuleConditionalTransferLightBase |||
| └ | | Public ❗️ | 🛑 | AccessControlModuleStandalone |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
-| └ | created | External ❗️ | 🛑 | onlyBoundToken |
-| └ | destroyed | External ❗️ | 🛑 | onlyBoundToken |
| └ | _authorizeTransferApproval | Internal 🔒 | | onlyRole |
-| └ | _authorizeTransferExecution | Internal 🔒 | | |
| └ | _onlyComplianceManager | Internal 🔒 | 🛑 | onlyRole |
diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightApprovalBase.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightApprovalBase.sol.md
new file mode 100644
index 0000000..2b38f0b
--- /dev/null
+++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightApprovalBase.sol.md
@@ -0,0 +1,35 @@
+## Sūrya's Description Report
+
+### Files Description Table
+
+
+| File Name | SHA-1 Hash |
+|-------------|--------------|
+| ./rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol | 6aa6f8cfabdb795343debc1b501508f392428404 |
+
+
+### Contracts Description Table
+
+
+| Contract | Type | Bases | | |
+|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
+| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
+||||||
+| **RuleConditionalTransferLightApprovalBase** | Implementation | RuleConditionalTransferLightInvariantStorage |||
+| └ | _authorizeTransferApproval | Internal 🔒 | | |
+| └ | _authorizeTransferExecution | Internal 🔒 | | |
+| └ | transferred | External ❗️ | 🛑 | onlyTransferExecutor |
+| └ | approveTransfer | Public ❗️ | 🛑 | onlyTransferApprover |
+| └ | cancelTransferApproval | Public ❗️ | 🛑 | onlyTransferApprover |
+| └ | approvedCount | Public ❗️ | |NO❗️ |
+| └ | _transferredFromContext | Internal 🔒 | 🛑 | |
+| └ | _transferred | Internal 🔒 | 🛑 | |
+| └ | _transferHash | Internal 🔒 | | |
+
+
+### Legend
+
+| Symbol | Meaning |
+|:--------:|-----------|
+| 🛑 | Function can modify state |
+| 💵 | Function is payable |
diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md
index 075c449..2a94c95 100644
--- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/operation/abstract/RuleConditionalTransferLightBase.sol | 649f37246378014573f7368fa573f21c4b15d679 |
+| ./rules/operation/abstract/RuleConditionalTransferLightBase.sol | 32e9a0425e0706764501785c3a4220b65ddeaec7 |
### Contracts Description Table
@@ -15,24 +15,19 @@
|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
-| **RuleConditionalTransferLightBase** | Implementation | VersionModule, RuleConditionalTransferLightInvariantStorage, IRule |||
-| └ | approveTransfer | Public ❗️ | 🛑 | onlyTransferApprover |
-| └ | cancelTransferApproval | Public ❗️ | 🛑 | onlyTransferApprover |
+| **RuleConditionalTransferLightBase** | Implementation | VersionModule, ERC3643ComplianceModule, RuleConditionalTransferLightApprovalBase, IRule |||
+| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
+| └ | messageForTransferRestriction | External ❗️ | |NO❗️ |
+| └ | created | External ❗️ | 🛑 | onlyBoundToken |
+| └ | destroyed | External ❗️ | 🛑 | onlyBoundToken |
| └ | approveAndTransferIfAllowed | Public ❗️ | 🛑 | onlyTransferApprover |
-| └ | approvedCount | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | 🛑 | onlyTransferExecutor |
| └ | transferred | Public ❗️ | 🛑 | onlyTransferExecutor |
+| └ | bindToken | Public ❗️ | 🛑 | onlyComplianceManager |
| └ | detectTransferRestriction | Public ❗️ | |NO❗️ |
| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ |
| └ | canTransfer | Public ❗️ | |NO❗️ |
| └ | canTransferFrom | Public ❗️ | |NO❗️ |
-| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | External ❗️ | |NO❗️ |
-| └ | transferred | External ❗️ | 🛑 | onlyTransferExecutor |
-| └ | _transferredFromContext | Internal 🔒 | 🛑 | |
-| └ | _transferred | Internal 🔒 | 🛑 | |
-| └ | _transferHash | Internal 🔒 | | |
-| └ | _authorizeTransferApproval | Internal 🔒 | | |
| └ | _authorizeTransferExecution | Internal 🔒 | | |
diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md
index 93c5fa4..99855f3 100644
--- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | db973443a192d9342f2d19b9909e00744e488439 |
+| ./rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 0acfbcd70d2a7a70fc2d244345cb363acff8def9 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md
index 6bcd7c1..fdf137b 100644
--- a/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleConditionalTransferLightOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 8687e3c3162af3f4863d713cf56b5895a724dc97 |
+| ./rules/operation/RuleConditionalTransferLightOwnable2Step.sol | 52c514a3996546640354595fd890941d0f8875ac |
### Contracts Description Table
@@ -19,7 +19,7 @@
| └ | | Public ❗️ | 🛑 | Ownable |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | _authorizeTransferApproval | Internal 🔒 | | onlyOwner |
-| └ | _authorizeTransferExecution | Internal 🔒 | | onlyOwner |
+| └ | _onlyComplianceManager | Internal 🔒 | 🛑 | onlyOwner |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleERC2980.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980.sol.md
index e8339b9..30beca3 100644
--- a/doc/surya/surya_report/surya_report_RuleERC2980.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleERC2980.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleERC2980.sol | b87580207068c728624349e0453fee91c3b90605 |
+| ./rules/validation/deployment/RuleERC2980.sol | 7d6e48bf6d899b27e31232a81f74fd04f19d6e76 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md
index b57d274..db7ccbb 100644
--- a/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleERC2980Base.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleERC2980Base.sol | d50ea84a4570130dffdd7940cd40004b6f6a2eb0 |
+| ./rules/validation/abstract/base/RuleERC2980Base.sol | 8cffbdad2d3c9179d43521bd57610ee8f3a47178 |
### Contracts Description Table
@@ -17,36 +17,36 @@
||||||
| **RuleERC2980Base** | Implementation | MetaTxModuleStandalone, RuleERC2980Internal, RuleERC2980InvariantStorage, RuleNFTAdapter, IERC2980, IIdentityRegistryVerified |||
| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
-| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | _transferred | Internal 🔒 | | |
-| └ | _transferredFrom | Internal 🔒 | | |
-| └ | canReturnTransferRestrictionCode | Public ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
+| └ | _authorizeWhitelistAdd | Internal 🔒 | | |
+| └ | _authorizeWhitelistRemove | Internal 🔒 | | |
+| └ | _authorizeFrozenlistAdd | Internal 🔒 | | |
+| └ | _authorizeFrozenlistRemove | Internal 🔒 | | |
| └ | addWhitelistAddresses | Public ❗️ | 🛑 | onlyWhitelistAdd |
| └ | removeWhitelistAddresses | Public ❗️ | 🛑 | onlyWhitelistRemove |
| └ | addWhitelistAddress | Public ❗️ | 🛑 | onlyWhitelistAdd |
| └ | removeWhitelistAddress | Public ❗️ | 🛑 | onlyWhitelistRemove |
+| └ | addFrozenlistAddresses | Public ❗️ | 🛑 | onlyFrozenlistAdd |
+| └ | removeFrozenlistAddresses | Public ❗️ | 🛑 | onlyFrozenlistRemove |
+| └ | addFrozenlistAddress | Public ❗️ | 🛑 | onlyFrozenlistAdd |
+| └ | removeFrozenlistAddress | Public ❗️ | 🛑 | onlyFrozenlistRemove |
+| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | canReturnTransferRestrictionCode | Public ❗️ | |NO❗️ |
+| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
+| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | whitelistAddressCount | Public ❗️ | |NO❗️ |
| └ | isWhitelisted | Public ❗️ | |NO❗️ |
| └ | whitelist | Public ❗️ | |NO❗️ |
| └ | isVerified | Public ❗️ | |NO❗️ |
| └ | areWhitelisted | Public ❗️ | |NO❗️ |
-| └ | addFrozenlistAddresses | Public ❗️ | 🛑 | onlyFrozenlistAdd |
-| └ | removeFrozenlistAddresses | Public ❗️ | 🛑 | onlyFrozenlistRemove |
-| └ | addFrozenlistAddress | Public ❗️ | 🛑 | onlyFrozenlistAdd |
-| └ | removeFrozenlistAddress | Public ❗️ | 🛑 | onlyFrozenlistRemove |
| └ | frozenlistAddressCount | Public ❗️ | |NO❗️ |
| └ | isFrozen | Public ❗️ | |NO❗️ |
| └ | frozenlist | Public ❗️ | |NO❗️ |
| └ | areFrozen | Public ❗️ | |NO❗️ |
-| └ | supportsInterface | Public ❗️ | |NO❗️ |
-| └ | _authorizeWhitelistAdd | Internal 🔒 | | |
-| └ | _authorizeWhitelistRemove | Internal 🔒 | | |
-| └ | _authorizeFrozenlistAdd | Internal 🔒 | | |
-| └ | _authorizeFrozenlistRemove | Internal 🔒 | | |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
+| └ | _transferred | Internal 🔒 | | |
+| └ | _transferredFrom | Internal 🔒 | | |
| └ | _msgSender | Internal 🔒 | | |
| └ | _msgData | Internal 🔒 | | |
| └ | _contextSuffixLength | Internal 🔒 | | |
diff --git a/doc/surya/surya_report/surya_report_RuleERC2980Internal.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980Internal.sol.md
index 4e8ea0e..7df0ae1 100644
--- a/doc/surya/surya_report/surya_report_RuleERC2980Internal.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleERC2980Internal.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol | c57c96a827baf067999c9568dd4e1e46f9443c60 |
+| ./rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol | 084ab0430f52a08abdad8e38a4693255426a3058 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md
index 35100ff..91125d6 100644
--- a/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleERC2980InvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | e297f0edb2cf9641ee0277f1baef6b838a61729c |
+| ./rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol | 7f95583b45c40e1ba4f8197421ed9fa2187a971f |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md
index 1656cc1..8a62e10 100644
--- a/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleERC2980Ownable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleERC2980Ownable2Step.sol | b8d79b607fd79c889394e5aa708b36bc27f66af0 |
+| ./rules/validation/deployment/RuleERC2980Ownable2Step.sol | 65d1a4469f2d80fda332499a277f75cfd96f07b3 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistry.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistry.sol.md
index 4d08de5..0ebfdb0 100644
--- a/doc/surya/surya_report/surya_report_RuleIdentityRegistry.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistry.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleIdentityRegistry.sol | de9802c7f1246d3f8055b7e8236f31d2bf599ca6 |
+| ./rules/validation/deployment/RuleIdentityRegistry.sol | f48fe73ef47e1f914fb6de05c2542913f5813817 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md
index d23f64e..c3c84c0 100644
--- a/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistryBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleIdentityRegistryBase.sol | b45427318245e6f2c8a95e6703a841f5aa17b92e |
+| ./rules/validation/abstract/base/RuleIdentityRegistryBase.sol | 3314d7f11202a0210238d55ad78d0ee67339aadf |
### Contracts Description Table
@@ -17,17 +17,17 @@
||||||
| **RuleIdentityRegistryBase** | Implementation | RuleNFTAdapter, RuleIdentityRegistryInvariantStorage |||
| └ | | Public ❗️ | 🛑 |NO❗️ |
+| └ | _authorizeIdentityRegistryManager | Internal 🔒 | | |
+| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
| └ | setIdentityRegistry | Public ❗️ | 🛑 | onlyIdentityRegistryManager |
| └ | clearIdentityRegistry | Public ❗️ | 🛑 | onlyIdentityRegistryManager |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | transferred | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _transferredFrom | Internal 🔒 | | |
-| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
-| └ | _authorizeIdentityRegistryManager | Internal 🔒 | | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md
index 3045ea6..978372a 100644
--- a/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistryInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | 663984fafa1c5e4989ba9e16187cec3fec5bf9b4 |
+| ./rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol | fcd7549f3bcfd95fb8b052a1c88a4a04672d8df1 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleIdentityRegistryOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleIdentityRegistryOwnable2Step.sol.md
index 25a4367..5c2f7a8 100644
--- a/doc/surya/surya_report/surya_report_RuleIdentityRegistryOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleIdentityRegistryOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol | 26ebe6c18ab705170cdbf9911cbedabee353bf95 |
+| ./rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol | f498c93b91bcdd36aa42817847953f3a308d51a6 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupply.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupply.sol.md
index ea3846f..e6e0d63 100644
--- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupply.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupply.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleMaxTotalSupply.sol | 45cedeaa489c5bafb1047c7eae8fdb2c14e24e1c |
+| ./rules/validation/deployment/RuleMaxTotalSupply.sol | 3880cdfe3de4b9ba850cb43e6310b2179329ce0d |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md
index 6782ba4..7c910e8 100644
--- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | d053ae9f319f818704986cd5e551422376088f75 |
+| ./rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol | c61ef04957bfd41edd3c13a799831f882d64813d |
### Contracts Description Table
@@ -17,17 +17,17 @@
||||||
| **RuleMaxTotalSupplyBase** | Implementation | RuleTransferValidation, RuleMaxTotalSupplyInvariantStorage |||
| └ | | Public ❗️ | 🛑 |NO❗️ |
+| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
| └ | setMaxTotalSupply | Public ❗️ | 🛑 | onlyMaxTotalSupplyManager |
| └ | setTokenContract | Public ❗️ | 🛑 | onlyMaxTotalSupplyManager |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | transferred | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | _transferred | Internal 🔒 | | |
-| └ | _transferredFrom | Internal 🔒 | | |
-| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
| └ | _authorizeMaxTotalSupplyManager | Internal 🔒 | | |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
+| └ | _transferred | Internal 🔒 | | |
+| └ | _transferredFrom | Internal 🔒 | | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md
index c267fcf..7e06b94 100644
--- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | 9c921b3736a3f7f28b6b0681c2cf995a55fa9cc6 |
+| ./rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol | bec7a27e5f4de88f379ab8440eb386ed0814773f |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyOwnable2Step.sol.md
index e6f9fcd..2d964cc 100644
--- a/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleMaxTotalSupplyOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol | adb4d6c6580cf2aacf8fb5547aa9dd93d6e05430 |
+| ./rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol | 6f8fc83269973f6497ca27721ae7b893cd6104e0 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md b/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md
index 08a6b2c..3f3a147 100644
--- a/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleNFTAdapter.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/core/RuleNFTAdapter.sol | 3c6af34113014eb17564b992ee6af4b0f973b89a |
+| ./rules/validation/abstract/core/RuleNFTAdapter.sol | b8f541d2d2891f8ef387c2830c86043dbc43ec19 |
### Contracts Description Table
@@ -16,8 +16,6 @@
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
| **RuleNFTAdapter** | Implementation | RuleTransferValidation, IERC7943NonFungibleComplianceExtend, ITransferContext |||
-| └ | _transferred | Internal 🔒 | 🛑 | |
-| └ | _transferredFrom | Internal 🔒 | 🛑 | |
| └ | detectTransferRestriction | Public ❗️ | |NO❗️ |
| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ |
| └ | canTransfer | Public ❗️ | |NO❗️ |
@@ -26,6 +24,8 @@
| └ | transferred | Public ❗️ | 🛑 |NO❗️ |
| └ | transferred | External ❗️ | 🛑 |NO❗️ |
| └ | transferred | External ❗️ | 🛑 |NO❗️ |
+| └ | _transferred | Internal 🔒 | 🛑 | |
+| └ | _transferredFrom | Internal 🔒 | 🛑 | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md
index 2fbdb7e..8ebe7f2 100644
--- a/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSanctionsList.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleSanctionsList.sol | 6d463c0d660ea2517d9aa0f678d0d38bb0634a1b |
+| ./rules/validation/deployment/RuleSanctionsList.sol | 8b9a8d5f53a59eccc4ac0204eeab3857cd8e18c4 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md
index cc2b1c7..3a28118 100644
--- a/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSanctionsListBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleSanctionsListBase.sol | bdaa898898ea6ba654f2b627b3dd0161b3c39d39 |
+| ./rules/validation/abstract/base/RuleSanctionsListBase.sol | c2e3984467b78f44467fceaeb9773a6dbd98ba83 |
### Contracts Description Table
@@ -17,18 +17,18 @@
||||||
| **RuleSanctionsListBase** | Implementation | MetaTxModuleStandalone, RuleNFTAdapter, RuleSanctionsListInvariantStorage |||
| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
| └ | setSanctionListOracle | Public ❗️ | 🛑 | onlySanctionListManager |
| └ | clearSanctionListOracle | Public ❗️ | 🛑 | onlySanctionListManager |
| └ | transferred | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
+| └ | _authorizeSanctionListManager | Internal 🔒 | | |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _transferredFrom | Internal 🔒 | | |
| └ | _setSanctionListOracle | Internal 🔒 | 🛑 | |
-| └ | _authorizeSanctionListManager | Internal 🔒 | | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md
index bd47a88..7df4574 100644
--- a/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSanctionsListInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 0b799d5753392482f00fea8d5a885847747d6360 |
+| ./rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol | 3d359490f48dcb20ee80dd25fe05aa9d447283b4 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md
index f491457..2ad4f13 100644
--- a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | ab32806c8989f946fb487bb3db318b49c5c265d4 |
+| ./rules/validation/deployment/RuleSanctionsListOwnable2Step.sol | 8e57be4539873118b38e561331a5daa212bc68f3 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md
index 1da0028..2cc62e1 100644
--- a/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSanctionsListOwnable2StepHarness.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/harness/RuleSanctionsListOwnable2StepHarness.sol | 44292571fdcfc1cd2bcaa78849bd355b11c0b391 |
+| ./mocks/harness/RuleSanctionsListOwnable2StepHarness.sol | 4ef2243400087a7fe3e72d38fd5f2c2bb160ee1d |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md
index 057a7f0..c7b1288 100644
--- a/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelist.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleSpenderWhitelist.sol | a0be674edf4d466f3359f0d8b9cf5e928356d27b |
+| ./rules/validation/deployment/RuleSpenderWhitelist.sol | fd6fa68104586756ba54f27a4ba950be852368ef |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md
index 692fb0b..6c40c5f 100644
--- a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleSpenderWhitelistBase.sol | 5c98b6381ca5afb108537c1e8691793f622098ee |
+| ./rules/validation/abstract/base/RuleSpenderWhitelistBase.sol | 4dcfe0d0236ac5c0a1773ae39504f384433ad4c9 |
### Contracts Description Table
@@ -17,12 +17,12 @@
||||||
| **RuleSpenderWhitelistBase** | Implementation | RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage |||
| └ | | Public ❗️ | 🛑 | RuleAddressSet |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | |NO❗️ |
| └ | transferred | Public ❗️ | |NO❗️ |
+| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _transferredFrom | Internal 🔒 | | |
diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md
index 7a787a4..2ec69c4 100644
--- a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistHarnesses.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/harness/RuleSpenderWhitelistHarnesses.sol | 0ffebe781ed82e1a573c0b78dad7051f9c10cd69 |
+| ./mocks/harness/RuleSpenderWhitelistHarnesses.sol | 2a35f957537cc77ebb9d88c1270c0c4a0ab6ab6d |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md
index a0f1499..8ab7606 100644
--- a/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleSpenderWhitelistOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol | ab6f45280b6ae2420fae79d04ee7092a6e22d2e6 |
+| ./rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol | 3a1a7f3c6cc386f57c7479adf4c1b5d13854a37e |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md b/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md
index 39097a2..db49896 100644
--- a/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleTransferValidation.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/core/RuleTransferValidation.sol | 60cacb209f7dd69907e0319ecd359140eeb3a204 |
+| ./rules/validation/abstract/core/RuleTransferValidation.sol | 2506b3a85578946fbff945a869252061a98672b2 |
### Contracts Description Table
@@ -16,13 +16,13 @@
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
| **RuleTransferValidation** | Implementation | VersionModule, IERC1404Extend, IERC3643ComplianceRead, IERC7551Compliance, IRule |||
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | detectTransferRestriction | Public ❗️ | |NO❗️ |
| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ |
| └ | canTransfer | Public ❗️ | |NO❗️ |
| └ | canTransferFrom | Public ❗️ | |NO❗️ |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md b/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md
deleted file mode 100644
index 533f5bf..0000000
--- a/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md
+++ /dev/null
@@ -1,33 +0,0 @@
-## Sūrya's Description Report
-
-### Files Description Table
-
-
-| File Name | SHA-1 Hash |
-|-------------|--------------|
-| ./rules/validation/abstract/RuleValidateTransfer.sol | 18be5a422df4cfea746702e500d9399b3edd5f68 |
-
-
-### Contracts Description Table
-
-
-| Contract | Type | Bases | | |
-|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
-| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
-||||||
-| **RuleValidateTransfer** | Implementation | IERC1404Extend, IERC3643ComplianceRead, IERC7551Compliance, IRule |||
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
-| └ | detectTransferRestriction | Public ❗️ | |NO❗️ |
-| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ |
-| └ | canTransfer | Public ❗️ | |NO❗️ |
-| └ | canTransferFrom | Public ❗️ | |NO❗️ |
-| └ | supportsInterface | Public ❗️ | |NO❗️ |
-
-
-### Legend
-
-| Symbol | Meaning |
-|:--------:|-----------|
-| 🛑 | Function can modify state |
-| 💵 | Function is payable |
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md
index 1d32e17..f31100a 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleWhitelist.sol | 51776b16b0583a57947a6fb2e1f4f5862bf491d0 |
+| ./rules/validation/deployment/RuleWhitelist.sol | 28719efcbd53f0d16152ede604d78ed0a05a7ae6 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md
index 7caef73..1718595 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleWhitelistBase.sol | c294dd72e48d0a71699d3b54c560e1e5c23d52da |
+| ./rules/validation/abstract/base/RuleWhitelistBase.sol | 3dc6bbac3c9d6bbbb012578f4d0ecd1fd790f44c |
### Contracts Description Table
@@ -17,13 +17,13 @@
||||||
| **RuleWhitelistBase** | Implementation | RuleAddressSet, RuleWhitelistShared, IIdentityRegistryVerified |||
| └ | | Public ❗️ | 🛑 | RuleAddressSet |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
-| └ | isVerified | Public ❗️ | |NO❗️ |
| └ | setCheckSpender | Public ❗️ | 🛑 | onlyCheckSpenderManager |
-| └ | _setCheckSpender | Internal 🔒 | 🛑 | |
+| └ | isVerified | Public ❗️ | |NO❗️ |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | _authorizeCheckSpenderManager | Internal 🔒 | | |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
+| └ | _setCheckSpender | Internal 🔒 | 🛑 | |
### Legend
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md
deleted file mode 100644
index bfd555b..0000000
--- a/doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md
+++ /dev/null
@@ -1,32 +0,0 @@
-## Sūrya's Description Report
-
-### Files Description Table
-
-
-| File Name | SHA-1 Hash |
-|-------------|--------------|
-| ./rules/validation/abstract/RuleWhitelistCommon.sol | 89eb3e8385ca0e5b6c49266da7b26229915e3e3c |
-
-
-### Contracts Description Table
-
-
-| Contract | Type | Bases | | |
-|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
-| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
-||||||
-| **RuleWhitelistCommon** | Implementation | RuleNFTAdapter, RuleWhitelistInvariantStorage |||
-| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ |
-| └ | messageForTransferRestriction | External ❗️ | |NO❗️ |
-| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | transferred | Public ❗️ | |NO❗️ |
-| └ | _transferred | Internal 🔒 | | |
-| └ | _transferredFrom | Internal 🔒 | | |
-
-
-### Legend
-
-| Symbol | Meaning |
-|:--------:|-----------|
-| 🛑 | Function can modify state |
-| 💵 | Function is payable |
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md
index f96edac..a246ab5 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 3f3d8473cd932de92f68cbbee4ce822d622719a3 |
+| ./rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol | 6c2af6b4853b757d90cd675e7c9d3ed90522959f |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistOwnable.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistOwnable.sol.md
deleted file mode 100644
index cf69f57..0000000
--- a/doc/surya/surya_report/surya_report_RuleWhitelistOwnable.sol.md
+++ /dev/null
@@ -1,33 +0,0 @@
-## Sūrya's Description Report
-
-### Files Description Table
-
-
-| File Name | SHA-1 Hash |
-|-------------|--------------|
-| ./rules/validation/RuleWhitelistOwnable.sol | 51f28c83fb3c795b4e468d59e1573a6cb51b8205 |
-
-
-### Contracts Description Table
-
-
-| Contract | Type | Bases | | |
-|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:|
-| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
-||||||
-| **RuleWhitelistOwnable** | Implementation | RuleWhitelistBase, Ownable2Step |||
-| └ | | Public ❗️ | 🛑 | RuleWhitelistBase Ownable |
-| └ | _authorizeAddressListAdd | Internal 🔒 | | |
-| └ | _authorizeAddressListRemove | Internal 🔒 | | |
-| └ | _authorizeCheckSpenderManager | Internal 🔒 | | |
-| └ | _msgSender | Internal 🔒 | | |
-| └ | _msgData | Internal 🔒 | | |
-| └ | _contextSuffixLength | Internal 🔒 | | |
-
-
-### Legend
-
-| Symbol | Meaning |
-|:--------:|-----------|
-| 🛑 | Function can modify state |
-| 💵 | Function is payable |
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistOwnable2Step.sol.md
index 6fff887..346c5a3 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleWhitelistOwnable2Step.sol | 3a8dd7feb518ccdd933216b4c5b10cf09c92869f |
+| ./rules/validation/deployment/RuleWhitelistOwnable2Step.sol | a8f5ed118679dd2e32abc7e51cd7e9c165879376 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md
index f0fc863..25d1139 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistShared.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/core/RuleWhitelistShared.sol | 32ad86781e49207c99a45a2866f1bd76fff3c1f0 |
+| ./rules/validation/abstract/core/RuleWhitelistShared.sol | b65096ed397e2a1c3506236a481824da43a4de35 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md
index 1fa327b..92397aa 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleWhitelistWrapper.sol | b3a545c03fcd77815fe7ed2675827303ecc734d3 |
+| ./rules/validation/deployment/RuleWhitelistWrapper.sol | 3294eb2b561b5055686ff1eb82b1f88494d1d9c6 |
### Contracts Description Table
@@ -18,12 +18,12 @@
| **RuleWhitelistWrapper** | Implementation | RuleWhitelistWrapperBase, AccessControlModuleStandalone |||
| └ | | Public ❗️ | 🛑 | RuleWhitelistWrapperBase AccessControlModuleStandalone |
| └ | hasRole | Public ❗️ | |NO❗️ |
+| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | _authorizeCheckSpenderManager | Internal 🔒 | 🛑 | onlyRole |
| └ | _onlyRulesManager | Internal 🔒 | 🛑 | onlyRole |
| └ | _msgSender | Internal 🔒 | | |
| └ | _msgData | Internal 🔒 | | |
| └ | _contextSuffixLength | Internal 🔒 | | |
-| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | _grantRole | Internal 🔒 | 🛑 | |
| └ | _revokeRole | Internal 🔒 | 🛑 | |
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md
index a704d91..948fa65 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperBase.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | b7d69ae4c5ff3d95b75a3c86e104a1deaf1fb834 |
+| ./rules/validation/abstract/base/RuleWhitelistWrapperBase.sol | ae2d97261413a3a126dde152a60bef8627ad1299 |
### Contracts Description Table
@@ -17,16 +17,16 @@
||||||
| **RuleWhitelistWrapperBase** | Implementation | RulesManagementModule, MetaTxModuleStandalone, RuleWhitelistShared, IIdentityRegistryVerified |||
| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone |
-| └ | _detectTransferRestriction | Internal 🔒 | | |
-| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
+| └ | _authorizeCheckSpenderManager | Internal 🔒 | 🛑 | |
+| └ | setCheckSpender | Public ❗️ | 🛑 | onlyCheckSpenderManager |
| └ | supportsInterface | Public ❗️ | |NO❗️ |
| └ | isVerified | Public ❗️ | |NO❗️ |
-| └ | setCheckSpender | Public ❗️ | 🛑 | onlyCheckSpenderManager |
+| └ | _detectTransferRestriction | Internal 🔒 | | |
+| └ | _detectTransferRestrictionFrom | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _transferred | Internal 🔒 | | |
| └ | _detectTransferRestrictionForTargets | Internal 🔒 | | |
| └ | _setCheckSpender | Internal 🔒 | 🛑 | |
-| └ | _authorizeCheckSpenderManager | Internal 🔒 | 🛑 | |
| └ | _msgSender | Internal 🔒 | | |
| └ | _msgData | Internal 🔒 | | |
| └ | _contextSuffixLength | Internal 🔒 | | |
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md
index bb09dc6..9cc84d0 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperHarnessInternal.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/harness/RuleWhitelistWrapperHarnessInternal.sol | 9b23d0a69ee6fd159072911d447c37fe54e42610 |
+| ./mocks/harness/RuleWhitelistWrapperHarnessInternal.sol | 3d8369bf0e3f3ad66c4732df955b00491a2d83c4 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md
index c4d00e7..352de2c 100644
--- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md
+++ b/doc/surya/surya_report/surya_report_RuleWhitelistWrapperOwnable2Step.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | ddd7eb760481cd54f2fad6b3665c93e460ba61e6 |
+| ./rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol | 5ec7ee305486a7edfdc2dc045d717fc8ecb2b577 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md b/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md
index a167801..e08c8c8 100644
--- a/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md
+++ b/doc/surya/surya_report/surya_report_SanctionListOracle.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/SanctionListOracle.sol | c3ba0148abb353bd935ec7c914c7e3c28e245a2f |
+| ./mocks/SanctionListOracle.sol | 01c0c904f32a647b4e851d03b6ca2947ed119bd0 |
### Contracts Description Table
diff --git a/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md b/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md
index 678f202..9892948 100644
--- a/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md
+++ b/doc/surya/surya_report/surya_report_TotalSupplyMock.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./mocks/TotalSupplyMock.sol | 200ea8b14c36b646b38d1487be97223685750a0f |
+| ./mocks/TotalSupplyMock.sol | 6c950ae26666c8693a87d9c66ea2a87107d03dd1 |
### Contracts Description Table
@@ -16,8 +16,8 @@
| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** |
||||||
| **TotalSupplyMock** | Implementation | |||
-| └ | totalSupply | External ❗️ | |NO❗️ |
| └ | setTotalSupply | External ❗️ | 🛑 |NO❗️ |
+| └ | totalSupply | External ❗️ | |NO❗️ |
### Legend
diff --git a/doc/surya/surya_report/surya_report_VersionModule.sol.md b/doc/surya/surya_report/surya_report_VersionModule.sol.md
index 761b851..e3a4204 100644
--- a/doc/surya/surya_report/surya_report_VersionModule.sol.md
+++ b/doc/surya/surya_report/surya_report_VersionModule.sol.md
@@ -5,7 +5,7 @@
| File Name | SHA-1 Hash |
|-------------|--------------|
-| ./modules/VersionModule.sol | 03d5ba27a122523661971f71f82b53ba3c1d52f2 |
+| ./modules/VersionModule.sol | 419acdca74542295a72abbf1fd6c29fdfbfe4f70 |
### Contracts Description Table
diff --git a/doc/technical/RuleConditionalTransferLight.md b/doc/technical/RuleConditionalTransferLight.md
index 2d1c17f..2c338b2 100644
--- a/doc/technical/RuleConditionalTransferLight.md
+++ b/doc/technical/RuleConditionalTransferLight.md
@@ -45,9 +45,9 @@ Increments the approval count for the `(from, to, value)` hash by 1. Restricted
Decrements the approval count for the `(from, to, value)` hash by 1. Reverts if no approval exists. Restricted to `OPERATOR_ROLE`. Emits `TransferApprovalCancelled`.
-### `approveAndTransferIfAllowed(address token, address from, address to, uint256 value) → bool`
+### `approveAndTransferIfAllowed(address from, address to, uint256 value) → bool`
-Approves the transfer and immediately calls `IERC20(token).transferFrom(from, to, value)` using this rule contract as the spender. Requires `from` to have previously approved this contract for at least `value` tokens. Restricted to `OPERATOR_ROLE`.
+Approves the transfer and immediately calls `SafeERC20.safeTransferFrom` on the currently bound token, using this rule contract as the spender. Requires `from` to have previously approved this contract for at least `value` tokens. Restricted to `OPERATOR_ROLE`.
### `approvedCount(address from, address to, uint256 value) → uint256`
diff --git a/doc/technical/RuleERC2980.md b/doc/technical/RuleERC2980.md
index 8ab7409..4bf1ffb 100644
--- a/doc/technical/RuleERC2980.md
+++ b/doc/technical/RuleERC2980.md
@@ -37,6 +37,14 @@ This rule implements the [ERC-2980](https://eips.ethereum.org/EIPS/eip-2980) Swi
| `FROZENLIST_ADD_ROLE` | May add addresses to the frozenlist |
| `FROZENLIST_REMOVE_ROLE` | May remove addresses from the frozenlist |
+## Constructor burn configuration
+
+- `RuleERC2980(address admin, address forwarderIrrevocable, bool allowBurn)`
+- `RuleERC2980Ownable2Step(address owner, address forwarderIrrevocable, bool allowBurn)`
+
+If `allowBurn` is `true`, the constructor whitelists `address(0)` so burn/redemption transfers to `address(0)` are allowed.
+If `allowBurn` is `false`, `address(0)` is not whitelisted by default and burn/redemption transfers revert with `CODE_ADDRESS_TO_NOT_WHITELISTED` (`63`).
+
## Whitelist methods
diff --git a/doc/technical/RuleWhitelist.md b/doc/technical/RuleWhitelist.md
index 28e0770..7f0bfd4 100644
--- a/doc/technical/RuleWhitelist.md
+++ b/doc/technical/RuleWhitelist.md
@@ -13,6 +13,7 @@ This rule restricts transfers so that only whitelisted addresses may send and re
| `admin` | Address granted `DEFAULT_ADMIN_ROLE` (implicitly holds all roles) |
| `forwarderIrrevocable` | ERC-2771 trusted forwarder address for meta-transactions (use `address(0)` to disable) |
| `checkSpender_` | If `true`, `transferFrom` spender address is also verified against the whitelist |
+| `allowMintBurn` | If `true`, pre-lists `address(0)` at deployment to allow mint/burn flows without a post-deploy `addAddress(address(0))` call |
### `checkSpender` flag
@@ -81,7 +82,7 @@ Enables or disables spender checks for `transferFrom`. Restricted to `DEFAULT_AD
### Zero address
-The zero address (`address(0)`) may be added to the whitelist. This is required by CMTAT to allow minting (mints are `transfer(address(0), to, value)`). OpenZeppelin prevents actual ERC-20 transfers to or from the zero address, so this does not create a security issue.
+The zero address (`address(0)`) may be added to the whitelist. This is required by CMTAT to allow minting (mints are `transfer(address(0), to, value)`) and burning (`to == address(0)`). You can either set `allowMintBurn=true` in the constructor to pre-list `address(0)`, or add it later with `addAddress(address(0))`. OpenZeppelin prevents actual ERC-20 transfers to or from the zero address, so this does not create a security issue.
### Batch vs single operations
diff --git a/hardhat.config.js b/hardhat.config.js
index 35d92be..38cd154 100644
--- a/hardhat.config.js
+++ b/hardhat.config.js
@@ -1,12 +1,15 @@
/** @type import('hardhat/config').HardhatUserConfig */
+require("@nomicfoundation/hardhat-toolbox");
require("@nomicfoundation/hardhat-foundry");
module.exports = {
- solidity: "0.8.34",
- settings: {
- optimizer: {
- enabled: true,
- runs: 200
- },
- evmVersion:"prague"
+ solidity: {
+ version: "0.8.34",
+ settings: {
+ optimizer: {
+ enabled: true,
+ runs: 200
+ },
+ evmVersion: "prague"
+ }
}
};
diff --git a/lib/RuleEngine b/lib/RuleEngine
index f3e27c1..ec4a24a 160000
--- a/lib/RuleEngine
+++ b/lib/RuleEngine
@@ -1 +1 @@
-Subproject commit f3e27c190635e91a64215276f4757d65eb2d2b2c
+Subproject commit ec4a24a96ca30e2ef8f79a06e49846a431e9b4b1
diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts
index 56a3de2..5fd1781 160000
--- a/lib/openzeppelin-contracts
+++ b/lib/openzeppelin-contracts
@@ -1 +1 @@
-Subproject commit 56a3de2cea907c9a500d32e70c275f68393b7ba6
+Subproject commit 5fd1781b1454fd1ef8e722282f86f9293cacf256
diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable
index c9f48f0..7bf4727 160000
--- a/lib/openzeppelin-contracts-upgradeable
+++ b/lib/openzeppelin-contracts-upgradeable
@@ -1 +1 @@
-Subproject commit c9f48f0d6c470a3edab20dcbb3cc35dcfc7f4f1f
+Subproject commit 7bf4727aacdbfaa0f36cbd664654d0c9e1dc52bf
diff --git a/package-lock.json b/package-lock.json
index 422534e..94696cd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,228 +4,188 @@
"requires": true,
"packages": {
"": {
+ "name": "Rules",
"devDependencies": {
- "@nomicfoundation/hardhat-foundry": "^1.0.1",
+ "@nomicfoundation/hardhat-foundry": "^1.2.1",
+ "@nomicfoundation/hardhat-toolbox": "^6.1.2",
+ "hardhat": "^2.28.6",
"sol2uml": "^2.5.20",
"surya": "^0.4.6"
}
},
+ "node_modules/@adraffy/ens-normalize": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz",
+ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@aduh95/viz.js": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz",
"integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==",
"dev": true
},
- "node_modules/@chainsafe/as-sha256": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz",
- "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==",
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/@chainsafe/persistent-merkle-tree": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz",
- "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"peer": true,
- "dependencies": {
- "@chainsafe/as-sha256": "^0.3.1"
+ "engines": {
+ "node": ">=0.1.90"
}
},
- "node_modules/@chainsafe/ssz": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz",
- "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==",
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@chainsafe/as-sha256": "^0.3.1",
- "@chainsafe/persistent-merkle-tree": "^0.4.2",
- "case": "^1.6.3"
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@ethersproject/abi": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz",
- "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==",
+ "node_modules/@ethereumjs/rlp": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz",
+ "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "MPL-2.0",
+ "bin": {
+ "rlp": "bin/rlp.cjs"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@ethersproject/abstract-provider": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz",
- "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==",
+ "node_modules/@ethereumjs/util": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz",
+ "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "MPL-2.0",
"dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/networks": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/web": "^5.7.0"
+ "@ethereumjs/rlp": "^5.0.2",
+ "ethereum-cryptography": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@ethersproject/abstract-signer": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz",
- "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==",
+ "node_modules/@ethereumjs/util/node_modules/@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0"
+ "@noble/hashes": "1.4.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@ethersproject/address": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz",
- "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==",
+ "node_modules/@ethereumjs/util/node_modules/@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@ethersproject/base64": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz",
- "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==",
+ "node_modules/@ethereumjs/util/node_modules/@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bytes": "^5.7.0"
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@ethersproject/basex": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz",
- "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==",
+ "node_modules/@ethereumjs/util/node_modules/@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/properties": "^5.7.0"
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@ethersproject/bignumber": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz",
- "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==",
+ "node_modules/@ethereumjs/util/node_modules/@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "bn.js": "^5.2.1"
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@ethersproject/bytes": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz",
- "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==",
+ "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/logger": "^5.7.0"
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
}
},
- "node_modules/@ethersproject/constants": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz",
- "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==",
+ "node_modules/@ethersproject/abi": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
+ "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==",
"dev": true,
"funding": [
{
@@ -237,14 +197,23 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bignumber": "^5.7.0"
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "node_modules/@ethersproject/contracts": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz",
- "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==",
+ "node_modules/@ethersproject/abstract-provider": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz",
+ "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==",
"dev": true,
"funding": [
{
@@ -256,23 +225,21 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abi": "^5.7.0",
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0"
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0"
}
},
- "node_modules/@ethersproject/hash": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz",
- "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==",
+ "node_modules/@ethersproject/abstract-signer": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz",
+ "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==",
"dev": true,
"funding": [
{
@@ -284,22 +251,19 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
}
},
- "node_modules/@ethersproject/hdnode": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz",
- "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==",
+ "node_modules/@ethersproject/address": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz",
+ "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==",
"dev": true,
"funding": [
{
@@ -311,25 +275,19 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/basex": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/pbkdf2": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/wordlists": "^5.7.0"
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0"
}
},
- "node_modules/@ethersproject/json-wallets": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz",
- "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==",
+ "node_modules/@ethersproject/base64": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz",
+ "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==",
"dev": true,
"funding": [
{
@@ -341,26 +299,15 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hdnode": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/pbkdf2": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "aes-js": "3.0.0",
- "scrypt-js": "3.0.1"
+ "@ethersproject/bytes": "^5.8.0"
}
},
- "node_modules/@ethersproject/keccak256": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz",
- "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==",
+ "node_modules/@ethersproject/bignumber": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz",
+ "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==",
"dev": true,
"funding": [
{
@@ -372,15 +319,17 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "js-sha3": "0.8.0"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "bn.js": "^5.2.1"
}
},
- "node_modules/@ethersproject/logger": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz",
- "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==",
+ "node_modules/@ethersproject/bytes": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz",
+ "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==",
"dev": true,
"funding": [
{
@@ -391,12 +340,16 @@
"type": "individual",
"url": "https://www.buymeacoffee.com/ricmoo"
}
- ]
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
},
- "node_modules/@ethersproject/networks": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz",
- "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==",
+ "node_modules/@ethersproject/constants": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz",
+ "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==",
"dev": true,
"funding": [
{
@@ -408,14 +361,15 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/bignumber": "^5.8.0"
}
},
- "node_modules/@ethersproject/pbkdf2": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz",
- "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==",
+ "node_modules/@ethersproject/hash": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz",
+ "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==",
"dev": true,
"funding": [
{
@@ -427,15 +381,23 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0"
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "node_modules/@ethersproject/properties": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz",
- "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==",
+ "node_modules/@ethersproject/keccak256": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz",
+ "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==",
"dev": true,
"funding": [
{
@@ -447,14 +409,16 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/bytes": "^5.8.0",
+ "js-sha3": "0.8.0"
}
},
- "node_modules/@ethersproject/providers": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz",
- "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==",
+ "node_modules/@ethersproject/logger": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz",
+ "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==",
"dev": true,
"funding": [
{
@@ -466,33 +430,12 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
- "dependencies": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/basex": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/networks": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/web": "^5.7.0",
- "bech32": "1.1.4",
- "ws": "7.4.6"
- }
- },
- "node_modules/@ethersproject/random": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz",
- "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==",
+ "license": "MIT"
+ },
+ "node_modules/@ethersproject/networks": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz",
+ "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==",
"dev": true,
"funding": [
{
@@ -504,15 +447,15 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/logger": "^5.8.0"
}
},
- "node_modules/@ethersproject/rlp": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz",
- "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==",
+ "node_modules/@ethersproject/properties": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz",
+ "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==",
"dev": true,
"funding": [
{
@@ -524,15 +467,15 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/logger": "^5.8.0"
}
},
- "node_modules/@ethersproject/sha2": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz",
- "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==",
+ "node_modules/@ethersproject/rlp": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz",
+ "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==",
"dev": true,
"funding": [
{
@@ -544,16 +487,16 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "hash.js": "1.1.7"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
"node_modules/@ethersproject/signing-key": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz",
- "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz",
+ "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==",
"dev": true,
"funding": [
{
@@ -565,43 +508,20 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
"bn.js": "^5.2.1",
- "elliptic": "6.5.4",
+ "elliptic": "6.6.1",
"hash.js": "1.1.7"
}
},
- "node_modules/@ethersproject/solidity": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz",
- "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
- }
- },
"node_modules/@ethersproject/strings": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz",
- "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz",
+ "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==",
"dev": true,
"funding": [
{
@@ -613,16 +533,17 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
"node_modules/@ethersproject/transactions": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz",
- "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz",
+ "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==",
"dev": true,
"funding": [
{
@@ -634,22 +555,23 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0"
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0"
}
},
"node_modules/@ethersproject/units": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz",
- "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz",
+ "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==",
"dev": true,
"funding": [
{
@@ -661,16 +583,18 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
- "node_modules/@ethersproject/wallet": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz",
- "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==",
+ "node_modules/@ethersproject/web": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz",
+ "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==",
"dev": true,
"funding": [
{
@@ -682,915 +606,851 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/hdnode": "^5.7.0",
- "@ethersproject/json-wallets": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/wordlists": "^5.7.0"
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "node_modules/@ethersproject/web": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz",
- "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==",
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "dependencies": {
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
}
},
- "node_modules/@ethersproject/wordlists": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz",
- "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==",
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@metamask/eth-sig-util": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz",
- "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==",
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "ethereumjs-abi": "^0.6.8",
- "ethereumjs-util": "^6.2.1",
- "ethjs-util": "^0.1.6",
- "tweetnacl": "^1.0.3",
- "tweetnacl-util": "^0.15.1"
+ "engines": {
+ "node": ">=12"
},
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=12.0.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@noble/hashes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz",
- "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==",
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "license": "MIT",
"peer": true
},
- "node_modules/@noble/secp256k1": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
- "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "peer": true
- },
- "node_modules/@nomicfoundation/ethereumjs-block": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz",
- "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==",
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "ethereum-cryptography": "0.1.3",
- "ethers": "^5.7.1"
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
},
"engines": {
- "node": ">=14"
- }
- },
- "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@nomicfoundation/ethereumjs-blockchain": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz",
- "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==",
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-ethash": "3.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "abstract-level": "^1.0.3",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "level": "^8.0.0",
- "lru-cache": "^5.1.1",
- "memory-level": "^1.0.0"
+ "ansi-regex": "^6.2.2"
},
"engines": {
- "node": ">=14"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "yallist": "^3.0.2"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/@nomicfoundation/ethereumjs-common": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz",
- "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==",
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "crc-32": "^1.2.0"
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "node_modules/@nomicfoundation/ethereumjs-ethash": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz",
- "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==",
+ "node_modules/@noble/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "abstract-level": "^1.0.3",
- "bigint-crypto-utils": "^3.0.23",
- "ethereum-cryptography": "0.1.3"
- },
"engines": {
- "node": ">=14"
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@noble/curves": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
+ "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "@noble/hashes": "1.3.2"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@nomicfoundation/ethereumjs-evm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz",
- "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==",
+ "node_modules/@noble/hashes": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz",
+ "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@ethersproject/providers": "^5.7.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "mcl-wasm": "^0.7.1",
- "rustbn.js": "~0.2.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=14"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@noble/secp256k1": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
+ "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/@nomicfoundation/ethereumjs-rlp": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz",
- "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "bin": {
- "rlp": "bin/rlp"
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=14"
+ "node": ">= 8"
}
},
- "node_modules/@nomicfoundation/ethereumjs-statemanager": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz",
- "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "ethers": "^5.7.1",
- "js-sdsl": "^4.1.4"
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@nomicfoundation/ethereumjs-trie": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz",
- "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==",
+ "node_modules/@nomicfoundation/edr": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.23.tgz",
+ "integrity": "sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "@types/readable-stream": "^2.3.13",
- "ethereum-cryptography": "0.1.3",
- "readable-stream": "^3.6.0"
+ "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.23",
+ "@nomicfoundation/edr-darwin-x64": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.23",
+ "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.23"
},
"engines": {
- "node": ">=14"
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@nomicfoundation/edr-darwin-arm64": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.23.tgz",
+ "integrity": "sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "node_modules/@nomicfoundation/edr-darwin-x64": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.23.tgz",
+ "integrity": "sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 6"
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-tx": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz",
- "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==",
+ "node_modules/@nomicfoundation/edr-linux-arm64-gnu": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.23.tgz",
+ "integrity": "sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@chainsafe/ssz": "^0.9.2",
- "@ethersproject/providers": "^5.7.2",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "ethereum-cryptography": "0.1.3"
- },
+ "license": "MIT",
"engines": {
- "node": ">=14"
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@nomicfoundation/edr-linux-arm64-musl": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.23.tgz",
+ "integrity": "sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-util": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz",
- "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==",
+ "node_modules/@nomicfoundation/edr-linux-x64-gnu": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.23.tgz",
+ "integrity": "sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@chainsafe/ssz": "^0.10.0",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "ethereum-cryptography": "0.1.3"
- },
+ "license": "MIT",
"engines": {
- "node": ">=14"
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz",
- "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==",
+ "node_modules/@nomicfoundation/edr-linux-x64-musl": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.23.tgz",
+ "integrity": "sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@chainsafe/as-sha256": "^0.3.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz",
- "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==",
+ "node_modules/@nomicfoundation/edr-win32-x64-msvc": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.23.tgz",
+ "integrity": "sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@chainsafe/as-sha256": "^0.3.1",
- "@chainsafe/persistent-merkle-tree": "^0.5.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
}
},
- "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@nomicfoundation/hardhat-chai-matchers": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.2.tgz",
+ "integrity": "sha512-NlUlde/ycXw2bLzA2gWjjbxQaD9xIRbAF30nsoEprAWzH8dXEI1ILZUKZMyux9n9iygEXTzN0SDVjE6zWDZi9g==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "@types/chai-as-promised": "^7.1.3",
+ "chai-as-promised": "^7.1.1",
+ "deep-eql": "^4.0.1",
+ "ordinal": "^1.0.3"
+ },
+ "peerDependencies": {
+ "@nomicfoundation/hardhat-ethers": "^3.1.0",
+ "chai": "^4.2.0",
+ "ethers": "^6.14.0",
+ "hardhat": "^2.26.0"
}
},
- "node_modules/@nomicfoundation/ethereumjs-vm": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz",
- "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==",
+ "node_modules/@nomicfoundation/hardhat-ethers": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz",
+ "integrity": "sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-blockchain": "7.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-evm": "2.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-statemanager": "2.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "mcl-wasm": "^0.7.1",
- "rustbn.js": "~0.2.0"
+ "debug": "^4.1.1",
+ "lodash.isequal": "^4.5.0"
},
- "engines": {
- "node": ">=14"
+ "peerDependencies": {
+ "ethers": "^6.14.0",
+ "hardhat": "^2.28.0"
}
},
- "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "node_modules/@nomicfoundation/hardhat-foundry": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.2.1.tgz",
+ "integrity": "sha512-pH1KeyI0sysgi7I7uQKPLXWl895EkuS6V41rSi820Ipqp/FScIwDh27RbevgC9zJ4ufSsSz34njm9cvRMGMNVA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "picocolors": "^1.1.0"
+ },
+ "peerDependencies": {
+ "hardhat": "^2.26.0"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.0.1.tgz",
- "integrity": "sha512-sQEaX3rik6Gclmek4MqCyOc9+vOM0ZS40eUARrB6K9t6wthqCwJ29CClfxLdbrjn/3MM5hX8ioD+/9OqdGVxSQ==",
+ "node_modules/@nomicfoundation/hardhat-ignition": {
+ "version": "0.15.16",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.16.tgz",
+ "integrity": "sha512-T0JTnuib7QcpsWkHCPLT7Z6F483EjTdcdjb1e00jqS9zTGCPqinPB66LLtR/duDLdvgoiCVS6K8WxTQkA/xR1Q==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "chalk": "^2.4.2"
+ "@nomicfoundation/ignition-core": "^0.15.15",
+ "@nomicfoundation/ignition-ui": "^0.15.13",
+ "chalk": "^4.0.0",
+ "debug": "^4.3.2",
+ "fs-extra": "^10.0.0",
+ "json5": "^2.2.3",
+ "prompts": "^2.4.2"
},
"peerDependencies": {
- "hardhat": "^2.12.6"
+ "@nomicfoundation/hardhat-verify": "^2.1.0",
+ "hardhat": "^2.26.0"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@nomicfoundation/hardhat-ignition-ethers": {
+ "version": "0.15.17",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.17.tgz",
+ "integrity": "sha512-io6Wrp1dUsJ94xEI3pw6qkPfhc9TFA+e6/+o16yQ8pvBTFMjgK5x8wIHKrrIHr9L3bkuTMtmDjyN4doqO2IqFQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "@nomicfoundation/hardhat-ethers": "^3.1.0",
+ "@nomicfoundation/hardhat-ignition": "^0.15.16",
+ "@nomicfoundation/ignition-core": "^0.15.15",
+ "ethers": "^6.14.0",
+ "hardhat": "^2.26.0"
+ }
+ },
+ "node_modules/@nomicfoundation/hardhat-network-helpers": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz",
+ "integrity": "sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "color-convert": "^1.9.0"
+ "ethereumjs-util": "^7.1.4"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "hardhat": "^2.26.0"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/@nomicfoundation/hardhat-toolbox": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-6.1.2.tgz",
+ "integrity": "sha512-xKL2r43GC/UIcQzmtFSmj3L4KqLSQ4fK+kyUw0vbIp94nV+9o2ZkI1s3znB8EKXqitt9ClXo0qcKj9RKOFjqPQ==",
"dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@nomicfoundation/hardhat-chai-matchers": "^2.1.0",
+ "@nomicfoundation/hardhat-ethers": "^3.1.3",
+ "@nomicfoundation/hardhat-ignition-ethers": "^0.15.14",
+ "@nomicfoundation/hardhat-network-helpers": "^1.1.0",
+ "@nomicfoundation/hardhat-verify": "^2.1.0",
+ "@typechain/ethers-v6": "^0.5.0",
+ "@typechain/hardhat": "^9.0.0",
+ "@types/chai": "^4.2.0",
+ "@types/mocha": ">=9.1.0",
+ "@types/node": ">=20.0.0",
+ "chai": "^4.2.0",
+ "ethers": "^6.14.0",
+ "hardhat": "^2.28.0",
+ "hardhat-gas-reporter": "^2.3.0",
+ "solidity-coverage": "^0.8.17",
+ "ts-node": ">=8.0.0",
+ "typechain": "^8.3.0",
+ "typescript": ">=4.5.0"
+ }
+ },
+ "node_modules/@nomicfoundation/hardhat-verify": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.3.tgz",
+ "integrity": "sha512-danbGjPp2WBhLkJdQy9/ARM3WQIK+7vwzE0urNem1qZJjh9f54Kf5f1xuQv8DvqewUAkuPxVt/7q4Grz5WjqSg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@ethersproject/abi": "^5.1.2",
+ "@ethersproject/address": "^5.0.2",
+ "cbor": "^8.1.0",
+ "debug": "^4.1.1",
+ "lodash.clonedeep": "^4.5.0",
+ "picocolors": "^1.1.0",
+ "semver": "^6.3.0",
+ "table": "^6.8.0",
+ "undici": "^5.14.0"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "hardhat": "^2.26.0"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "node_modules/@nomicfoundation/ignition-core": {
+ "version": "0.15.15",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.15.tgz",
+ "integrity": "sha512-JdKFxYknTfOYtFXMN6iFJ1vALJPednuB+9p9OwGIRdoI6HYSh4ZBzyRURgyXtHFyaJ/SF9lBpsYV9/1zEpcYwg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "color-name": "1.1.3"
+ "@ethersproject/address": "5.6.1",
+ "@nomicfoundation/solidity-analyzer": "^0.1.1",
+ "cbor": "^9.0.0",
+ "debug": "^4.3.2",
+ "ethers": "^6.14.0",
+ "fs-extra": "^10.0.0",
+ "immer": "10.0.2",
+ "lodash": "4.17.21",
+ "ndjson": "2.0.0"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz",
+ "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.6.2",
+ "@ethersproject/bytes": "^5.6.1",
+ "@ethersproject/keccak256": "^5.6.1",
+ "@ethersproject/logger": "^5.6.0",
+ "@ethersproject/rlp": "^5.6.1"
}
},
- "node_modules/@nomicfoundation/hardhat-foundry/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz",
+ "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "has-flag": "^3.0.0"
+ "nofilter": "^3.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=16"
}
},
+ "node_modules/@nomicfoundation/ignition-ui": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.13.tgz",
+ "integrity": "sha512-HbTszdN1iDHCkUS9hLeooqnLEW2U45FaqFwFEYT8nIno2prFZhG+n68JEERjmfFCB5u0WgbuJwk3CgLoqtSL7Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/@nomicfoundation/solidity-analyzer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz",
- "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz",
+ "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 12"
},
"optionalDependencies": {
- "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1"
+ "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz",
- "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==",
- "cpu": [
- "arm64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz",
+ "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz",
- "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz",
- "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==",
- "cpu": [
- "x64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz",
+ "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "freebsd"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz",
- "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==",
- "cpu": [
- "arm64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz",
+ "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz",
- "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==",
- "cpu": [
- "arm64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz",
+ "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz",
- "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==",
- "cpu": [
- "x64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz",
+ "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz",
- "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==",
- "cpu": [
- "x64"
- ],
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz",
+ "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "linux"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
- "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz",
- "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz",
+ "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
- "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz",
- "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
+ "license": "MIT",
"optional": true,
- "os": [
- "win32"
- ],
"peer": true,
"engines": {
- "node": ">= 10"
+ "node": ">=14"
}
},
- "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz",
- "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz",
+ "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.4.3",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.4",
+ "tar-fs": "^3.1.1",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
"engines": {
- "node": ">= 10"
+ "node": ">=18"
}
},
- "node_modules/@scure/base": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz",
- "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==",
+ "node_modules/@puppeteer/browsers/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "peer": true
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "node_modules/@scure/bip32": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz",
- "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==",
+ "node_modules/@puppeteer/browsers/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@noble/hashes": "~1.2.0",
- "@noble/secp256k1": "~1.7.0",
- "@scure/base": "~1.1.0"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@scure/bip39": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz",
- "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==",
+ "node_modules/@puppeteer/browsers/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@scure/base": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip32": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz",
+ "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==",
+ "dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@noble/hashes": "~1.2.0",
- "@scure/base": "~1.1.0"
+ "@noble/curves": "~1.9.0",
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@sentry/core": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz",
- "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==",
+ "node_modules/@scure/bip32/node_modules/@noble/curves": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
+ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip32/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip39": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz",
+ "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip39/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@sentry/core": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz",
+ "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@sentry/hub": "5.30.0",
+ "@sentry/minimal": "5.30.0",
+ "@sentry/types": "5.30.0",
+ "@sentry/utils": "5.30.0",
+ "tslib": "^1.9.3"
},
"engines": {
"node": ">=6"
}
},
+ "node_modules/@sentry/core/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@sentry/hub": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz",
"integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sentry/types": "5.30.0",
"@sentry/utils": "5.30.0",
@@ -1600,12 +1460,19 @@
"node": ">=6"
}
},
+ "node_modules/@sentry/hub/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@sentry/minimal": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz",
"integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sentry/hub": "5.30.0",
"@sentry/types": "5.30.0",
@@ -1615,12 +1482,19 @@
"node": ">=6"
}
},
+ "node_modules/@sentry/minimal/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@sentry/node": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz",
"integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sentry/core": "5.30.0",
"@sentry/hub": "5.30.0",
@@ -1636,12 +1510,19 @@
"node": ">=6"
}
},
+ "node_modules/@sentry/node/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@sentry/tracing": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz",
"integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"@sentry/hub": "5.30.0",
"@sentry/minimal": "5.30.0",
@@ -1653,12 +1534,19 @@
"node": ">=6"
}
},
+ "node_modules/@sentry/tracing/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@sentry/types": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz",
"integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=6"
}
@@ -1668,7 +1556,7 @@
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz",
"integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@sentry/types": "5.30.0",
"tslib": "^1.9.3"
@@ -1677,25 +1565,140 @@
"node": ">=6"
}
},
+ "node_modules/@sentry/utils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/@solidity-parser/parser": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz",
- "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz",
+ "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
+ "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@typechain/ethers-v6": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz",
+ "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "antlr4ts": "^0.5.0-alpha.4"
+ "lodash": "^4.17.15",
+ "ts-essentials": "^7.0.1"
+ },
+ "peerDependencies": {
+ "ethers": "6.x",
+ "typechain": "^8.3.2",
+ "typescript": ">=4.7.0"
+ }
+ },
+ "node_modules/@typechain/hardhat": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz",
+ "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "fs-extra": "^9.1.0"
+ },
+ "peerDependencies": {
+ "@typechain/ethers-v6": "^0.5.1",
+ "ethers": "^6.1.0",
+ "hardhat": "^2.9.9",
+ "typechain": "^8.3.2"
+ }
+ },
+ "node_modules/@typechain/hardhat/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/@types/bn.js": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz",
- "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz",
+ "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*"
}
},
+ "node_modules/@types/chai": {
+ "version": "4.3.20",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz",
+ "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/chai-as-promised": {
+ "version": "7.1.8",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz",
+ "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/chai": "*"
+ }
+ },
"node_modules/@types/debug": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
@@ -1705,11 +1708,32 @@
"@types/ms": "*"
}
},
- "node_modules/@types/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==",
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/mocha": {
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz",
+ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@types/ms": {
@@ -1719,131 +1743,113 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
- "dev": true
+ "version": "25.6.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
+ "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.19.0"
+ }
},
"node_modules/@types/pbkdf2": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz",
- "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*"
}
},
- "node_modules/@types/readable-stream": {
- "version": "2.3.15",
- "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz",
- "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==",
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
"dev": true,
- "peer": true,
- "dependencies": {
- "@types/node": "*",
- "safe-buffer": "~5.1.1"
- }
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/secp256k1": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz",
- "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz",
+ "integrity": "sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"@types/node": "*"
}
},
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "node_modules/abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/abitype": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz",
+ "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "event-target-shim": "^5.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/wevm"
},
- "engines": {
- "node": ">=6.5"
+ "peerDependencies": {
+ "typescript": ">=5.0.4",
+ "zod": "^3.22.0 || ^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "zod": {
+ "optional": true
+ }
}
},
- "node_modules/abstract-level": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz",
- "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==",
+ "node_modules/acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "buffer": "^6.0.3",
- "catering": "^2.1.0",
- "is-buffer": "^2.0.5",
- "level-supports": "^4.0.0",
- "level-transcoder": "^1.0.1",
- "module-error": "^1.0.1",
- "queue-microtask": "^1.2.3"
+ "bin": {
+ "acorn": "bin/acorn"
},
"engines": {
- "node": ">=12"
+ "node": ">=0.4.0"
}
},
- "node_modules/abstract-level/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "node_modules/acorn-walk": {
+ "version": "8.3.5",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+ "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "license": "MIT",
"peer": true,
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/abstract-level/node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true,
+ "acorn": "^8.11.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=0.4.0"
}
},
"node_modules/adm-zip": {
@@ -1851,16 +1857,17 @@
"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
"integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=0.3.0"
}
},
"node_modules/aes-js": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
- "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==",
- "dev": true
+ "version": "4.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz",
+ "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/agent-base": {
"version": "6.0.2",
@@ -1879,7 +1886,7 @@
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -1888,12 +1895,52 @@
"node": ">=8"
}
},
+ "node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
+ "dev": true,
+ "license": "BSD-3-Clause OR MIT",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.2"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -1903,7 +1950,7 @@
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -1915,12 +1962,13 @@
}
},
"node_modules/ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/ansi-styles": {
@@ -1942,30 +1990,147 @@
"version": "0.5.0-alpha.4",
"resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
"integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
- "peer": true
+ "license": "Python-2.0"
},
- "node_modules/asynckit": {
+ "node_modules/array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/axios": {
- "version": "1.7.9",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
- "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz",
+ "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
+ "follow-redirects": "^1.15.11",
+ "form-data": "^4.0.5",
+ "proxy-from-env": "^2.1.0"
}
},
"node_modules/axios-debug-log": {
@@ -1981,81 +2146,156 @@
"axios": ">=1.0.0"
}
},
+ "node_modules/b4a": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz",
+ "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "node_modules/base-x": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz",
- "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==",
+ "node_modules/bare-events": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-fs": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz",
+ "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==",
+ "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "safe-buffer": "^5.0.1"
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
}
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "node_modules/bare-os": {
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz",
+ "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
+ "license": "Apache-2.0",
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz",
+ "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "streamx": "^2.25.0",
+ "teex": "^1.0.1"
+ },
+ "peerDependencies": {
+ "bare-abort-controller": "*",
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
},
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "bare-buffer": {
+ "optional": true
},
- {
- "type": "consulting",
- "url": "https://feross.org/support"
+ "bare-events": {
+ "optional": true
}
- ]
+ }
},
- "node_modules/bech32": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
- "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==",
- "dev": true
+ "node_modules/bare-url": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz",
+ "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-path": "^3.0.0"
+ }
},
- "node_modules/bigint-crypto-utils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz",
- "integrity": "sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw==",
+ "node_modules/base-x": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz",
+ "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=14.0.0"
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
}
},
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "node_modules/basic-ftp": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.2.tgz",
+ "integrity": "sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==",
"dev": true,
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 6"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/blakejs": {
@@ -2063,53 +2303,122 @@
"resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz",
"integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/bn.js": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz",
+ "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
"integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
"dev": true
},
- "node_modules/browser-level": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz",
- "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==",
+ "node_modules/brotli-wasm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brotli-wasm/-/brotli-wasm-2.0.1.tgz",
+ "integrity": "sha512-+3USgYsC7bzb5yU0/p2HnnynZl0ak0E6uoIm4UW4Aby/8s8HFCq6NCfrrf1E9c3O8OCSzq3oYO1tUVqIi61Nww==",
"dev": true,
- "peer": true,
- "dependencies": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.1",
- "module-error": "^1.0.2",
- "run-parallel-limit": "^1.1.0"
- }
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/browserify-aes": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"buffer-xor": "^1.0.3",
@@ -2125,6 +2434,7 @@
"resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
"integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"base-x": "^3.0.2"
@@ -2135,6 +2445,7 @@
"resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz",
"integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"bs58": "^4.0.0",
@@ -2142,35 +2453,12 @@
"safe-buffer": "^5.1.2"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -2180,34 +2468,22 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/busboy": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
- "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "streamsearch": "^1.1.0"
- },
- "engines": {
- "node": ">=10.16.0"
- }
- },
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -2219,55 +2495,122 @@
"dev": true
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "get-intrinsic": "^1.3.0",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
}
},
- "node_modules/case": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz",
- "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==",
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"dev": true,
+ "license": "MIT",
"peer": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/catering": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz",
- "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==",
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/cbor": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz",
+ "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
+ "nofilter": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12.19"
+ }
+ },
+ "node_modules/chai": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
+ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chai-as-promised": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz",
+ "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==",
+ "dev": true,
+ "license": "WTFPL",
+ "peer": true,
+ "dependencies": {
+ "check-error": "^1.0.2"
+ },
+ "peerDependencies": {
+ "chai": ">= 2.1.2 < 6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
@@ -2277,22 +2620,52 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/check-error": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "get-func-name": "^2.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
+ "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
"domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ "domutils": "^3.2.2",
+ "encoding-sniffer": "^0.2.1",
+ "htmlparser2": "^10.1.0",
+ "parse5": "^7.3.0",
+ "parse5-htmlparser2-tree-adapter": "^7.1.0",
+ "parse5-parser-stream": "^7.1.2",
+ "undici": "^7.19.0",
+ "whatwg-mimetype": "^4.0.0"
},
"engines": {
- "node": ">= 6"
+ "node": ">=20.18.1"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
@@ -2303,6 +2676,7 @@
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-select": "^5.1.0",
@@ -2315,66 +2689,123 @@
"url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
+ "node_modules/cheerio/node_modules/undici": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz",
+ "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chromium-bidi": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz",
+ "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
},
"node_modules/ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/classic-level": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz",
- "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz",
+ "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==",
"dev": true,
- "hasInstallScript": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.0",
- "module-error": "^1.0.1",
- "napi-macros": "^2.2.2",
- "node-gyp-build": "^4.3.0"
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.2"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.10"
}
},
+ "node_modules/cipher-base/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
- "peer": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cli-color": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
- "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
+ "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"d": "^1.0.1",
- "es5-ext": "^0.10.61",
+ "es5-ext": "^0.10.64",
"es6-iterator": "^2.0.3",
"memoizee": "^0.4.15",
"timers-ext": "^0.1.7"
@@ -2383,24 +2814,36 @@
"node": ">=0.10"
}
},
- "node_modules/cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "node_modules/cli-table3": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
}
},
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
"node_modules/color-convert": {
@@ -2447,18 +2890,170 @@
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/command-line-args": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
+ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-back": "^3.1.0",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/command-line-usage": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
+ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-back": "^4.0.2",
+ "chalk": "^2.4.2",
+ "table-layout": "^1.0.2",
+ "typical": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT",
"peer": true
},
+ "node_modules/command-line-usage/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
+ "dev": true,
+ "peer": true
},
"node_modules/convert-svg-core": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.6.4.tgz",
- "integrity": "sha512-8mS0n7otc1lljTte4z7nDhihEakKCRq4w5ivMnIGeOZuD/OV/eDZNNEgGLV1ET3p+rMbnrZnX4lAcsf14WzD5w==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.7.1.tgz",
+ "integrity": "sha512-qlQlT2pHMCG0NmZsh2yuYNYO9zKbOmHoWPT+ibuvpVjvA7l9aNhHS4debQeZGuR0mA4x/0a38zOTqBkkdYoTXQ==",
"dev": true,
"funding": [
{
@@ -2470,36 +3065,21 @@
"url": "https://www.patreon.com/neocotic"
}
],
+ "license": "MIT",
"dependencies": {
- "chalk": "^4.1.2",
- "cheerio": "^1.0.0-rc.11",
- "commander": "^9.2.0",
- "file-url": "^3.0.0",
- "get-stdin": "^8.0.0",
- "glob": "^8.0.1",
- "lodash.omit": "^4.5.0",
- "lodash.pick": "^4.4.0",
- "pollock": "^0.2.0",
- "puppeteer": "^13.7.0",
- "tmp": "^0.2.1"
+ "cheerio": "^1.1.0",
+ "file-url": "^4.0.0",
+ "puppeteer-core": "^24.10.1",
+ "tmp": "^0.2.3"
},
"engines": {
- "node": "^12.20.0 || >=14"
- }
- },
- "node_modules/convert-svg-core/node_modules/commander": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
- "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || >=14"
+ "node": ">=22"
}
},
"node_modules/convert-svg-to-png": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.6.4.tgz",
- "integrity": "sha512-zHNTuVedkyuhMl+f+HMm2L7+TKDYCKFAqAmDqUr0dN7/xtgYe76PPAydjlFzeLbzEpGtEfhaA15q+ejpLaVo3g==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.7.1.tgz",
+ "integrity": "sha512-XgLC/EmK0/GvdaHpCpEHCHL/ty/TDeezk8+AKWmUfEgUrYiwR9Tqrih9zfVWVzQYvn8mtjLvROv9xRQ7FHBo/Q==",
"dev": true,
"funding": [
{
@@ -2511,14 +3091,12 @@
"url": "https://www.patreon.com/neocotic"
}
],
+ "license": "MIT",
"dependencies": {
- "convert-svg-core": "^0.6.4"
- },
- "bin": {
- "convert-svg-to-png": "bin/convert-svg-to-png"
+ "convert-svg-core": "^0.7.1"
},
"engines": {
- "node": "^12.20.0 || >=14"
+ "node": ">=22"
}
},
"node_modules/cookie": {
@@ -2526,29 +3104,52 @@
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/crc-32": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
- "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true,
- "peer": true,
- "bin": {
- "crc32": "bin/crc32.njs"
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
},
"engines": {
- "node": ">=0.8"
- }
- },
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/create-hash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"cipher-base": "^1.0.1",
@@ -2563,6 +3164,7 @@
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"cipher-base": "^1.0.3",
@@ -2573,20 +3175,100 @@
"sha.js": "^2.4.8"
}
},
- "node_modules/cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "node-fetch": "2.6.7"
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": "*"
}
},
"node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
@@ -2599,10 +3281,11 @@
}
},
"node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
},
@@ -2611,22 +3294,44 @@
}
},
"node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
}
},
+ "node_modules/death": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz",
+ "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -2637,11 +3342,126 @@
}
}
},
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "node_modules/deep-eql": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "type-detect": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/degenerator/node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/degenerator/node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/degenerator/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/degenerator/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
"engines": {
"node": ">=0.10.0"
}
@@ -2660,16 +3480,27 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/devtools-protocol": {
- "version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
- "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
- "dev": true
+ "version": "0.0.1595872",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz",
+ "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/diff": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
+ "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
},
"node_modules/diff-match-patch": {
"version": "1.0.5",
@@ -2677,11 +3508,39 @@
"integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
"dev": true
},
+ "node_modules/difflib": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz",
+ "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "heap": ">= 0.2.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -2701,13 +3560,15 @@
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -2719,24 +3580,49 @@
}
},
"node_modules/domutils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
- "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
- "domhandler": "^5.0.1"
+ "domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
+ "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -2748,45 +3634,76 @@
}
},
"node_modules/elliptic/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "version": "4.12.3",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
+ "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true,
- "peer": true
+ "license": "MIT"
+ },
+ "node_modules/encoding-sniffer": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "whatwg-encoding": "^3.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
+ }
+ },
+ "node_modules/encoding-sniffer/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "ansi-colors": "^4.1.1"
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/entities": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
- "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -2799,20 +3716,81 @@
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es5-ext": {
- "version": "0.10.62",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
- "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"dev": true,
"hasInstallScript": true,
+ "license": "ISC",
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
@@ -2824,6 +3802,7 @@
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"d": "1",
"es5-ext": "^0.10.35",
@@ -2831,13 +3810,17 @@
}
},
"node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
}
},
"node_modules/es6-weak-map": {
@@ -2845,6 +3828,7 @@
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"d": "1",
"es5-ext": "^0.10.46",
@@ -2853,93 +3837,134 @@
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.8.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ethereum-cryptography": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz",
- "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==",
+ "node_modules/escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==",
"dev": true,
+ "license": "BSD-2-Clause",
"peer": true,
"dependencies": {
- "@noble/hashes": "1.2.0",
- "@noble/secp256k1": "1.7.1",
- "@scure/bip32": "1.1.5",
- "@scure/bip39": "1.1.1"
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.2.0"
}
},
- "node_modules/ethereumjs-abi": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz",
- "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==",
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"dependencies": {
- "bn.js": "^4.11.8",
- "ethereumjs-util": "^6.0.0"
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
- "node_modules/ethereumjs-abi/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "node_modules/esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
"dev": true,
- "peer": true
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/ethereumjs-util": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz",
- "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==",
+ "node_modules/estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==",
"dev": true,
"peer": true,
- "dependencies": {
- "@types/bn.js": "^4.11.3",
- "bn.js": "^4.11.0",
- "create-hash": "^1.1.2",
- "elliptic": "^6.5.2",
- "ethereum-cryptography": "^0.1.3",
- "ethjs-util": "0.1.6",
- "rlp": "^2.2.3"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/ethereumjs-util/node_modules/@types/bn.js": {
- "version": "4.11.6",
- "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz",
- "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==",
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ethereum-bloom-filters": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz",
+ "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@types/node": "*"
+ "@noble/hashes": "^1.4.0"
}
},
- "node_modules/ethereumjs-util/node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
},
- "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": {
+ "node_modules/ethereum-cryptography": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
"integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/pbkdf2": "^3.0.0",
@@ -2959,87 +3984,143 @@
"setimmediate": "^1.0.5"
}
},
+ "node_modules/ethereumjs-util": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz",
+ "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "peer": true,
+ "dependencies": {
+ "@types/bn.js": "^5.1.0",
+ "bn.js": "^5.1.2",
+ "create-hash": "^1.1.2",
+ "ethereum-cryptography": "^0.1.3",
+ "rlp": "^2.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/ethers": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz",
- "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==",
+ "version": "6.16.0",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz",
+ "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==",
"dev": true,
"funding": [
{
"type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ "url": "https://github.com/sponsors/ethers-io/"
},
{
"type": "individual",
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
+ "license": "MIT",
+ "dependencies": {
+ "@adraffy/ens-normalize": "1.10.1",
+ "@noble/curves": "1.2.0",
+ "@noble/hashes": "1.3.2",
+ "@types/node": "22.7.5",
+ "aes-js": "4.0.0-beta.5",
+ "tslib": "2.7.0",
+ "ws": "8.17.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/ethers/node_modules/@types/node": {
+ "version": "22.7.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz",
+ "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@ethersproject/abi": "5.7.0",
- "@ethersproject/abstract-provider": "5.7.0",
- "@ethersproject/abstract-signer": "5.7.0",
- "@ethersproject/address": "5.7.0",
- "@ethersproject/base64": "5.7.0",
- "@ethersproject/basex": "5.7.0",
- "@ethersproject/bignumber": "5.7.0",
- "@ethersproject/bytes": "5.7.0",
- "@ethersproject/constants": "5.7.0",
- "@ethersproject/contracts": "5.7.0",
- "@ethersproject/hash": "5.7.0",
- "@ethersproject/hdnode": "5.7.0",
- "@ethersproject/json-wallets": "5.7.0",
- "@ethersproject/keccak256": "5.7.0",
- "@ethersproject/logger": "5.7.0",
- "@ethersproject/networks": "5.7.1",
- "@ethersproject/pbkdf2": "5.7.0",
- "@ethersproject/properties": "5.7.0",
- "@ethersproject/providers": "5.7.2",
- "@ethersproject/random": "5.7.0",
- "@ethersproject/rlp": "5.7.0",
- "@ethersproject/sha2": "5.7.0",
- "@ethersproject/signing-key": "5.7.0",
- "@ethersproject/solidity": "5.7.0",
- "@ethersproject/strings": "5.7.0",
- "@ethersproject/transactions": "5.7.0",
- "@ethersproject/units": "5.7.0",
- "@ethersproject/wallet": "5.7.0",
- "@ethersproject/web": "5.7.1",
- "@ethersproject/wordlists": "5.7.0"
- }
- },
- "node_modules/ethjs-util": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/ethers/node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ethers/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ethjs-unit": {
"version": "0.1.6",
- "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz",
- "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
+ "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz",
+ "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "is-hex-prefixed": "1.0.0",
- "strip-hex-prefix": "1.0.0"
+ "bn.js": "4.11.6",
+ "number-to-bn": "1.7.0"
},
"engines": {
"node": ">=6.5.0",
"npm": ">=3"
}
},
+ "node_modules/ethjs-unit/node_modules/bn.js": {
+ "version": "4.11.6",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
+ "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
- "node_modules/event-target-shim": {
+ "node_modules/eventemitter3": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
}
},
"node_modules/evp_bytestokey": {
@@ -3047,6 +4128,7 @@
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"md5.js": "^1.3.4",
@@ -3058,21 +4140,17 @@
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"type": "^2.7.2"
}
},
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
- "dev": true
- },
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@@ -3088,51 +4166,140 @@
"@types/yauzl": "^2.9.1"
}
},
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
},
"node_modules/file-url": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz",
- "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/file-url/-/file-url-4.0.0.tgz",
+ "integrity": "sha512-vRCdScQ6j3Ku6Kd7W1kZk9c++5SqD6Xz5Jotrjr/nkY714M14RFHy/AAVA2WQvpsqVAVgTbDrYyBpU205F0cLw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
+ "node_modules/find-replace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
+ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-back": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/flat": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"bin": {
"flat": "cli.js"
}
},
"node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"dev": true,
"funding": [
{
@@ -3140,6 +4307,7 @@
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -3149,14 +4317,66 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
@@ -3168,27 +4388,22 @@
"resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz",
"integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==",
"dev": true,
- "peer": true
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
+ "license": "MIT"
},
"node_modules/fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=6 <7 || >=8"
+ "node": ">=12"
}
},
"node_modules/fs.realpath": {
@@ -3197,52 +4412,89 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
- "peer": true
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
},
- "node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "node_modules/get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dev": true,
- "engines": {
- "node": ">=10"
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/get-stream": {
@@ -3250,6 +4502,7 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@@ -3260,31 +4513,253 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/glob": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
- "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+ "node_modules/get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ghost-testrpc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz",
+ "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "node-emoji": "^1.10.0"
+ },
+ "bin": {
+ "testrpc-sc": "index.js"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/ghost-testrpc/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ghost-testrpc/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
+ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/globby/node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/globby/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/globby/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true,
- "peer": true
+ "license": "ISC"
},
"node_modules/graphviz": {
"version": "0.0.9",
@@ -3298,59 +4773,82 @@
"node": ">=0.6.8"
}
},
- "node_modules/hardhat": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.14.0.tgz",
- "integrity": "sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ==",
+ "node_modules/handlebars": {
+ "version": "4.7.9",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
+ "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/handlebars/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
+ "license": "BSD-3-Clause",
"peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hardhat": {
+ "version": "2.28.6",
+ "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.6.tgz",
+ "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
+ "@ethereumjs/util": "^9.1.0",
"@ethersproject/abi": "^5.1.2",
- "@metamask/eth-sig-util": "^4.0.0",
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-blockchain": "7.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-evm": "2.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-statemanager": "2.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "@nomicfoundation/ethereumjs-vm": "7.0.1",
+ "@nomicfoundation/edr": "0.12.0-next.23",
"@nomicfoundation/solidity-analyzer": "^0.1.0",
"@sentry/node": "^5.18.1",
- "@types/bn.js": "^5.1.0",
- "@types/lru-cache": "^5.1.0",
- "abort-controller": "^3.0.0",
"adm-zip": "^0.4.16",
"aggregate-error": "^3.0.0",
"ansi-escapes": "^4.3.0",
- "chalk": "^2.4.2",
- "chokidar": "^3.4.0",
+ "boxen": "^5.1.2",
+ "chokidar": "^4.0.0",
"ci-info": "^2.0.0",
"debug": "^4.1.1",
"enquirer": "^2.3.0",
"env-paths": "^2.2.0",
"ethereum-cryptography": "^1.0.3",
- "ethereumjs-abi": "^0.6.8",
- "find-up": "^2.1.0",
+ "find-up": "^5.0.0",
"fp-ts": "1.19.3",
"fs-extra": "^7.0.1",
- "glob": "7.2.0",
"immutable": "^4.0.0-rc.12",
"io-ts": "1.10.4",
+ "json-stream-stringify": "^3.1.4",
"keccak": "^3.0.2",
"lodash": "^4.17.11",
+ "micro-eth-signer": "^0.14.0",
"mnemonist": "^0.38.0",
"mocha": "^10.0.0",
"p-map": "^4.0.0",
- "qs": "^6.7.0",
+ "picocolors": "^1.1.0",
"raw-body": "^2.4.1",
"resolve": "1.17.0",
"semver": "^6.3.0",
- "solc": "0.7.3",
+ "solc": "0.8.26",
"source-map-support": "^0.5.13",
"stacktrace-parser": "^0.1.10",
+ "tinyglobby": "^0.2.6",
"tsort": "0.0.1",
"undici": "^5.14.0",
"uuid": "^8.3.2",
@@ -3359,9 +4857,6 @@
"bin": {
"hardhat": "internal/cli/bootstrap.js"
},
- "engines": {
- "node": ">=14.0.0"
- },
"peerDependencies": {
"ts-node": "*",
"typescript": "*"
@@ -3375,806 +4870,877 @@
}
}
},
- "node_modules/hardhat/node_modules/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/hardhat/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/hardhat-gas-reporter": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-2.3.0.tgz",
+ "integrity": "sha512-ySdA+044xMQv1BlJu5CYXToHzMexKFfIWxlQTBNNoerx1x96+d15IMdN01iQZ/TJ7NH2V5sU73bz77LoS/PEVw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=8"
+ "dependencies": {
+ "@ethersproject/abi": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/units": "^5.7.0",
+ "@solidity-parser/parser": "^0.20.1",
+ "axios": "^1.6.7",
+ "brotli-wasm": "^2.0.1",
+ "chalk": "4.1.2",
+ "cli-table3": "^0.6.3",
+ "ethereum-cryptography": "^2.1.3",
+ "glob": "^10.3.10",
+ "jsonschema": "^1.4.1",
+ "lodash": "^4.17.21",
+ "markdown-table": "2.0.0",
+ "sha1": "^1.1.1",
+ "viem": "^2.27.0"
+ },
+ "peerDependencies": {
+ "hardhat": "^2.16.0"
}
},
- "node_modules/hardhat/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/hardhat-gas-reporter/node_modules/@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "color-convert": "^1.9.0"
+ "@noble/hashes": "1.4.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "node_modules/hardhat-gas-reporter/node_modules/@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
"engines": {
- "node": ">= 8"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "node_modules/hardhat-gas-reporter/node_modules/@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=8"
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/hardhat-gas-reporter/node_modules/@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "node_modules/hardhat-gas-reporter/node_modules/@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "node_modules/hardhat-gas-reporter/node_modules/ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
+ }
},
- "node_modules/hardhat/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/hardhat-gas-reporter/node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
+ "license": "ISC",
"peer": true,
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": ">=4"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/hardhat/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "node_modules/hardhat-gas-reporter/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "license": "ISC",
"peer": true,
"dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
+ "brace-expansion": "^2.0.2"
},
"engines": {
- "node": ">= 8.10.0"
+ "node": ">=16 || 14 >=14.17"
},
- "optionalDependencies": {
- "fsevents": "~2.3.2"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/hardhat/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/hardhat/node_modules/@noble/hashes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz",
+ "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/hardhat/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "node_modules/hardhat/node_modules/@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true,
- "peer": true,
- "dependencies": {
- "color-name": "1.1.3"
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/hardhat/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "node_modules/hardhat/node_modules/@scure/bip32": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz",
+ "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==",
"dev": true,
- "peer": true
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "~1.2.0",
+ "@noble/secp256k1": "~1.7.0",
+ "@scure/base": "~1.1.0"
+ }
},
- "node_modules/hardhat/node_modules/diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "node_modules/hardhat/node_modules/@scure/bip39": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz",
+ "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.3.1"
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "~1.2.0",
+ "@scure/base": "~1.1.0"
}
},
- "node_modules/hardhat/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/hardhat/node_modules/ethereum-cryptography": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz",
+ "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@noble/hashes": "1.2.0",
+ "@noble/secp256k1": "1.7.1",
+ "@scure/bip32": "1.1.5",
+ "@scure/bip39": "1.1.1"
}
},
"node_modules/hardhat/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^2.0.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "node_modules/hardhat/node_modules/fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=6 <7 || >=8"
}
},
- "node_modules/hardhat/node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "node_modules/hardhat/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
- "peer": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/hardhat/node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "node_modules/hardhat/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": "*"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/hardhat/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "is-glob": "^4.0.1"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/hardhat/node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "peer": true,
- "bin": {
- "he": "bin/he"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "node_modules/hardhat/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "binary-extensions": "^2.0.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "node_modules/hardhat/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 4.0.0"
}
},
- "node_modules/hardhat/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/hardhat/node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "is-extglob": "^2.1.1"
+ "es-define-property": "^1.0.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hardhat/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.12.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hardhat/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "has-symbols": "^1.0.3"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hardhat/node_modules/minimatch": {
+ "node_modules/hash-base": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz",
+ "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "inherits": "^2.0.4",
+ "readable-stream": "^2.3.8",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.1"
},
"engines": {
- "node": "*"
+ "node": ">= 0.8"
}
},
- "node_modules/hardhat/node_modules/mocha": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
- "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.4",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "5.0.1",
- "ms": "2.1.3",
- "nanoid": "3.3.3",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "workerpool": "6.2.1",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha.js"
- },
- "engines": {
- "node": ">= 14.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mochajs"
- }
+ "node_modules/hash-base/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
- "node_modules/hardhat/node_modules/mocha/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/hash-base/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "balanced-match": "^1.0.0"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/hash-base/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/hasha": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
+ "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "node_modules/hasha/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true,
- "peer": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "function-bind": "^1.1.2"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/heap": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
+ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
"dev": true,
- "peer": true,
"dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "node_modules/htmlparser2": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
"dev": true,
- "peer": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=8"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/hardhat/node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.8"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "node_modules/hardhat/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
},
- "node_modules/hardhat/node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 14"
}
},
- "node_modules/hardhat/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dev": true,
- "peer": true,
"dependencies": {
- "p-try": "^1.0.0"
+ "agent-base": "6",
+ "debug": "4"
},
"engines": {
- "node": ">=4"
+ "node": ">= 6"
}
},
- "node_modules/hardhat/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "p-limit": "^1.1.0"
+ "safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/hardhat/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
- "node": ">=4"
+ "node": ">= 4"
}
},
- "node_modules/hardhat/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "node_modules/immer": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz",
+ "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
}
},
- "node_modules/hardhat/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "node_modules/immutable": {
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz",
+ "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==",
"dev": true,
- "peer": true,
+ "license": "MIT"
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "picomatch": "^2.2.1"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hardhat/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true,
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/hardhat/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
- "peer": true,
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
- "node_modules/hardhat/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
"engines": {
- "node": ">=8"
+ "node": ">= 0.10"
}
},
- "node_modules/hardhat/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/io-ts": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz",
+ "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "fp-ts": "^1.0.0"
}
},
- "node_modules/hardhat/node_modules/supports-color/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">= 12"
}
},
- "node_modules/hardhat/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"dev": true,
- "peer": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
+ "license": "MIT"
},
- "node_modules/hardhat/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "binary-extensions": "^2.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=8"
}
},
- "node_modules/hardhat/node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hardhat/node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
+ "license": "MIT",
"engines": {
- "node": ">=7.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/hardhat/node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "peer": true
- },
- "node_modules/hardhat/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/hardhat/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "is-extglob": "^2.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
- "node_modules/hardhat/node_modules/yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "node_modules/is-hex-prefixed": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
+ "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
- "node": ">=10"
+ "node": ">=6.5.0",
+ "npm": ">=3"
}
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
- "peer": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=0.12.0"
}
},
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "node_modules/is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
"dev": true,
- "peer": true,
+ "license": "MIT"
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -4182,323 +5748,182 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/hash-base/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "node": ">=10"
},
- "engines": {
- "node": ">= 6"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hash-base/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "license": "MIT",
"peer": true
},
- "node_modules/hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "node_modules/hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true,
- "dependencies": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
+ "peer": true
},
- "node_modules/htmlparser2": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
- "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
+ "node_modules/isows": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz",
+ "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==",
"dev": true,
"funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
- "url": "https://github.com/sponsors/fb55"
+ "url": "https://github.com/sponsors/wevm"
}
],
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "entities": "^4.3.0"
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "ws": "*"
}
},
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"peer": true,
"dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">= 0.8"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "node_modules/js-graph-algorithms": {
+ "version": "1.0.18",
+ "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz",
+ "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==",
"dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
+ "bin": {
+ "js-graphs": "src/jsgraphs.js"
}
},
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "node_modules/js-sha3": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true,
- "peer": true,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "argparse": "^2.0.1"
},
- "engines": {
- "node": ">=0.10.0"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
- "dev": true,
- "peer": true
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/io-ts": {
- "version": "1.10.4",
- "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz",
- "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "fp-ts": "^1.0.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
+ "license": "MIT"
},
- "node_modules/is-hex-prefixed": {
+ "node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
- "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.5.0",
- "npm": ">=3"
- }
+ "license": "MIT",
+ "peer": true
},
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "node_modules/json-stream-stringify": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz",
+ "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=7.10.1"
}
},
- "node_modules/is-promise": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
- "dev": true
- },
- "node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "ISC",
+ "peer": true
},
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/js-graph-algorithms": {
- "version": "1.0.18",
- "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz",
- "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==",
- "dev": true,
"bin": {
- "js-graphs": "src/jsgraphs.js"
- }
- },
- "node_modules/js-sdsl": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
- "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
- "dev": true,
- "peer": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/js-sha3": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
- "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "argparse": "^2.0.1"
+ "universalify": "^2.0.0"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "node_modules/jsonschema": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz",
+ "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": "*"
}
},
"node_modules/keccak": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz",
- "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz",
+ "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==",
"dev": true,
"hasInstallScript": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"node-addon-api": "^2.0.0",
"node-gyp-build": "^4.2.0",
@@ -4508,19 +5933,15 @@
"node": ">=10.0.0"
}
},
- "node_modules/keccak/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
"engines": {
- "node": ">= 6"
+ "node": ">=0.10.0"
}
},
"node_modules/klaw": {
@@ -4532,110 +5953,85 @@
"node": ">=14.14.0"
}
},
- "node_modules/level": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz",
- "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "browser-level": "^1.0.1",
- "classic-level": "^1.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/level"
- }
- },
- "node_modules/level-supports": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz",
- "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==",
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true,
+ "license": "MIT",
"peer": true,
"engines": {
- "node": ">=12"
+ "node": ">=6"
}
},
- "node_modules/level-transcoder": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz",
- "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==",
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "buffer": "^6.0.3",
- "module-error": "^1.0.1"
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/level-transcoder/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true,
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "node": ">= 0.8.0"
}
},
- "node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/lodash.omit": {
+ "node_modules/lodash.clonedeep": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
- "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
- "node_modules/lodash.pick": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
- "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==",
- "dev": true
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -4647,11 +6043,30 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/loupe": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "get-func-name": "^2.0.1"
+ }
+ },
"node_modules/lru_map": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
"integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC",
"peer": true
},
"node_modules/lru-queue": {
@@ -4659,30 +6074,42 @@
"resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
"integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"es5-ext": "~0.10.2"
}
},
- "node_modules/map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/markdown-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+ "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "p-defer": "^1.0.0"
+ "repeat-string": "^1.0.0"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/mcl-wasm": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz",
- "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==",
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=8.9.0"
+ "node": ">= 0.4"
}
},
"node_modules/md5.js": {
@@ -4690,6 +6117,7 @@
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"hash-base": "^3.0.0",
@@ -4698,34 +6126,23 @@
}
},
"node_modules/memoizee": {
- "version": "0.4.15",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
- "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
+ "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
+ "d": "^1.0.2",
+ "es5-ext": "^0.10.64",
"es6-weak-map": "^2.0.3",
"event-emitter": "^0.3.5",
"is-promise": "^2.2.2",
"lru-queue": "^0.1.0",
"next-tick": "^1.1.0",
"timers-ext": "^0.1.7"
- }
- },
- "node_modules/memory-level": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz",
- "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "abstract-level": "^1.0.0",
- "functional-red-black-tree": "^1.0.1",
- "module-error": "^1.0.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=0.12"
}
},
"node_modules/memorystream": {
@@ -4733,290 +6150,291 @@
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
"integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
"dev": true,
- "peer": true,
"engines": {
"node": ">= 0.10.0"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">= 0.6"
+ "node": ">= 8"
}
},
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "node_modules/micro-eth-signer": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz",
+ "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
+ "@noble/curves": "~1.8.1",
+ "@noble/hashes": "~1.7.1",
+ "micro-packed": "~0.7.2"
}
},
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "node_modules/minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
- "dev": true
- },
- "node_modules/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "node_modules/micro-eth-signer/node_modules/@noble/curves": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz",
+ "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@noble/hashes": "1.7.2"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
- },
- "node_modules/mnemonist": {
- "version": "0.38.5",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz",
- "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "obliterator": "^2.0.0"
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/module-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz",
- "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==",
+ "node_modules/micro-eth-signer/node_modules/@noble/hashes": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz",
+ "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
- "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
- "dev": true,
- "peer": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
+ "node": "^14.21.3 || >=16"
},
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/napi-macros": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz",
- "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==",
- "dev": true,
- "peer": true
- },
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "dev": true
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node_modules/node-addon-api": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz",
- "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
+ "node_modules/micro-ftch": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz",
+ "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "node_modules/micro-packed": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz",
+ "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
+ "@scure/base": "~1.2.5"
},
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
}
},
- "node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
- "dependencies": {
- "path-key": "^2.0.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">= 0.6"
}
},
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": {
- "boolbase": "^1.0.0"
+ "mime-db": "1.52.0"
},
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/number-is-nan": {
+ "node_modules/minimalistic-assert": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "node_modules/minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
},
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/obliterator": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
- "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==",
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
"dev": true,
- "peer": true
+ "license": "BlueOak-1.0.0",
+ "peer": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
"dev": true,
- "dependencies": {
- "wrappy": "1"
- }
+ "license": "MIT"
},
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=0.10.0"
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
}
},
- "node_modules/p-defer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
+ "node_modules/mnemonist": {
+ "version": "0.38.5",
+ "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz",
+ "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "license": "MIT",
+ "dependencies": {
+ "obliterator": "^2.0.0"
}
},
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true,
+ "node_modules/mocha": {
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
+ "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.3",
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.5",
+ "diff": "^5.2.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^8.1.0",
+ "he": "^1.2.0",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^5.1.6",
+ "ms": "^2.1.3",
+ "serialize-javascript": "^6.0.2",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^6.5.1",
+ "yargs": "^16.2.0",
+ "yargs-parser": "^20.2.9",
+ "yargs-unparser": "^2.0.0"
+ },
+ "bin": {
+ "_mocha": "bin/_mocha",
+ "mocha": "bin/mocha.js"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 14.0.0"
}
},
- "node_modules/p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "node_modules/mocha/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
}
},
- "node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-try": "^2.0.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "node_modules/mocha/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "p-limit": "^2.2.0"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "aggregate-error": "^3.0.0"
+ "p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
@@ -5025,5753 +6443,9649 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=10"
}
},
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "node_modules/mocha/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "entities": "^4.4.0"
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "node_modules/mocha/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=8.10.0"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
- "node_modules/pbkdf2": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "node_modules/ndjson": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz",
+ "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "json-stringify-safe": "^5.0.1",
+ "minimist": "^1.2.5",
+ "readable-stream": "^3.6.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "ndjson": "cli.js"
},
"engines": {
- "node": ">=0.12"
+ "node": ">=10"
}
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "node_modules/netmask": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
+ "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "node": ">= 0.4.0"
}
},
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/node-addon-api": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz",
+ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-emoji": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+ "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "lodash": "^4.17.21"
}
},
- "node_modules/pollock": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/pollock/-/pollock-0.2.1.tgz",
- "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==",
- "dev": true
+ "node_modules/node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
},
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "node_modules/nofilter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz",
+ "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">=12.19"
}
},
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "node_modules/nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
}
},
- "node_modules/puppeteer": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz",
- "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==",
- "deprecated": "< 18.1.0 is no longer supported",
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "cross-fetch": "3.1.5",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.981744",
- "extract-zip": "2.0.1",
- "https-proxy-agent": "5.0.1",
- "pkg-dir": "4.2.0",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "rimraf": "3.0.2",
- "tar-fs": "2.1.1",
- "unbzip2-stream": "1.4.3",
- "ws": "8.5.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=10.18.1"
+ "node": ">=0.10.0"
}
},
- "node_modules/puppeteer/node_modules/ws": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
- "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dev": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
},
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
- "node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "node_modules/number-to-bn": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz",
+ "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "side-channel": "^1.0.4"
+ "bn.js": "4.11.6",
+ "strip-hex-prefix": "1.0.0"
},
"engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=6.5.0",
+ "npm": ">=3"
}
},
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "node_modules/number-to-bn/node_modules/bn.js": {
+ "version": "4.11.6",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
+ "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "license": "MIT",
"peer": true
},
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "node_modules/obliterator": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz",
+ "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
- "peer": true,
"dependencies": {
- "safe-buffer": "^5.1.0"
+ "wrappy": "1"
}
},
- "node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8.0"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "node_modules/ordinal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz",
+ "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT",
+ "peer": true
},
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
- "dev": true
- },
- "node_modules/resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "node_modules/ox": {
+ "version": "0.14.15",
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.15.tgz",
+ "integrity": "sha512-3TubCmbKen/cuZQzX0qDbOS5lojjdSZ90lqKxWIDWd5siuJ0IJBaTXMYs8eMPLcraqnOwGZazz3apHPGiRCkGQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
"peer": true,
"dependencies": {
- "path-parse": "^1.0.6"
+ "@adraffy/ens-normalize": "^1.11.0",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "^1.8.0",
+ "@scure/bip32": "^1.7.0",
+ "@scure/bip39": "^1.6.0",
+ "abitype": "^1.2.3",
+ "eventemitter3": "5.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "typescript": ">=5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "node_modules/ox/node_modules/@adraffy/ens-normalize": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
+ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/ox/node_modules/@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "glob": "^7.1.3"
+ "@noble/hashes": "1.8.0"
},
- "bin": {
- "rimraf": "bin.js"
+ "engines": {
+ "node": "^14.21.3 || >=16"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/rimraf/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/ox/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/rimraf/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "aggregate-error": "^3.0.0"
},
"engines": {
- "node": "*"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/rimraf/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
},
"engines": {
- "node": "*"
+ "node": ">= 14"
}
},
- "node_modules/ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "node_modules/pac-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/rlp": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz",
- "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==",
+ "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "bn.js": "^5.2.0"
+ "agent-base": "^7.1.2",
+ "debug": "4"
},
- "bin": {
- "rlp": "bin/rlp"
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/run-parallel-limit": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz",
- "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==",
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "queue-microtask": "^1.2.2"
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/rustbn.js": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz",
- "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==",
- "dev": true,
- "peer": true
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"peer": true
},
- "node_modules/scrypt-js": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
- "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==",
- "dev": true
- },
- "node_modules/secp256k1": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz",
- "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==",
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
- "hasInstallScript": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "elliptic": "^6.5.4",
- "node-addon-api": "^2.0.0",
- "node-gyp-build": "^4.2.0"
+ "callsites": "^3.0.0"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=6"
}
},
- "node_modules/serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "randombytes": "^2.1.0"
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true,
- "peer": true
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
},
- "node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "domhandler": "^5.0.3",
+ "parse5": "^7.0.0"
},
- "bin": {
- "sha.js": "bin.js"
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "node_modules/sha1-file": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz",
- "integrity": "sha512-IgcUYjTck/UAx0wdtBoTwiy4/yiIZX6do4uaqUtryJY/pBOQC1w3Cb/bZMyC2H3QYnodL5vbX0lY69xlWqeBnA==",
- "deprecated": "Version 1.x or earlier is no longer supported.",
- "dev": true
- },
- "node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "node_modules/parse5-parser-stream": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "parse5": "^7.0.0"
},
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"peer": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/sol2uml": {
- "version": "2.5.20",
- "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.20.tgz",
- "integrity": "sha512-La+UQ4Y6n8yG3Vfy5FudhZGJvymJ13PxuC00W4pKF3iIZFcRGPVH7RLBQ8lc+JqOt+YW92oSaSGSwHnlTmd7tg==",
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
+ "license": "BlueOak-1.0.0",
+ "peer": true,
"dependencies": {
- "@aduh95/viz.js": "^3.7.0",
- "@solidity-parser/parser": "^0.16.1",
- "axios": "^1.6.0",
- "axios-debug-log": "^1.0.0",
- "cli-color": "^2.0.3",
- "commander": "^11.1.0",
- "convert-svg-to-png": "^0.6.4",
- "debug": "^4.3.4",
- "diff-match-patch": "^1.0.5",
- "ethers": "^5.7.2",
- "js-graph-algorithms": "^1.0.18",
- "klaw": "^4.1.0"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
- "bin": {
- "sol2uml": "lib/sol2uml.js"
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/sol2uml/node_modules/@solidity-parser/parser": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz",
- "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==",
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
- "dependencies": {
- "antlr4ts": "^0.5.0-alpha.4"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/sol2uml/node_modules/commander": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
- "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "node_modules/pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=16"
+ "node": "*"
}
},
- "node_modules/solc": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz",
- "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==",
+ "node_modules/pbkdf2": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz",
+ "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "command-exists": "^1.2.8",
- "commander": "3.0.2",
- "follow-redirects": "^1.12.1",
- "fs-extra": "^0.30.0",
- "js-sha3": "0.8.0",
- "memorystream": "^0.3.1",
- "require-from-string": "^2.0.0",
- "semver": "^5.5.0",
- "tmp": "0.0.33"
- },
- "bin": {
- "solcjs": "solcjs"
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "ripemd160": "^2.0.3",
+ "safe-buffer": "^5.2.1",
+ "sha.js": "^2.4.12",
+ "to-buffer": "^1.2.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">= 0.10"
}
},
- "node_modules/solc/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/pbkdf2/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
},
- "node_modules/solc/node_modules/commander": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz",
- "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==",
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
- "node_modules/solc/node_modules/fs-extra": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
- "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==",
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
- "peer": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "rimraf": "^2.2.8"
- }
+ "license": "ISC"
},
- "node_modules/solc/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"dev": true,
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=8.6"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/solc/node_modules/jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==",
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/solc/node_modules/klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==",
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.9"
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/solc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"dev": true,
"peer": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
"engines": {
- "node": "*"
+ "node": ">= 0.8.0"
}
},
- "node_modules/solc/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
"bin": {
- "rimraf": "bin.js"
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/solc/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true,
- "peer": true,
- "bin": {
- "semver": "bin/semver"
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "node_modules/solc/node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "os-tmpdir": "~1.0.2"
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">= 6"
}
},
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "node_modules/proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "node_modules/proxy-agent/node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 14"
}
},
- "node_modules/stacktrace-parser": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
- "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "node_modules/proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "type-fest": "^0.7.1"
+ "agent-base": "^7.1.2",
+ "debug": "4"
},
"engines": {
- "node": ">=6"
+ "node": ">= 14"
}
},
- "node_modules/stacktrace-parser/node_modules/type-fest": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "node_modules/proxy-agent/node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.8"
- }
+ "license": "MIT"
},
- "node_modules/streamsearch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
- "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "node_modules/proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=10.0.0"
+ "node": ">=10"
}
},
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "node_modules/puppeteer": {
+ "version": "24.41.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.41.0.tgz",
+ "integrity": "sha512-W6Fk0J3TPjjtwjXOyR/qf+YaL0H/Uq8HIgHcXG4mNM/IgbKMCH/HPyK0Fi2qbTU/QpSl9bCte2yBpGHKejTpIw==",
"dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "2.13.0",
+ "chromium-bidi": "14.0.0",
+ "cosmiconfig": "^9.0.0",
+ "devtools-protocol": "0.0.1595872",
+ "puppeteer-core": "24.41.0",
+ "typed-query-selector": "^2.12.1"
+ },
+ "bin": {
+ "puppeteer": "lib/cjs/puppeteer/node/cli.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "node_modules/puppeteer-core": {
+ "version": "24.41.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.41.0.tgz",
+ "integrity": "sha512-rLIUri7E/NQ3APSEYCCozaSJx0u8Tu9wxO6BJwnvXmIgILSK3L0TombaVh3izp1njAGrO6H2ru0hcIrLF+gWLw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "ansi-regex": "^3.0.0"
+ "@puppeteer/browsers": "2.13.0",
+ "chromium-bidi": "14.0.0",
+ "debug": "^4.4.3",
+ "devtools-protocol": "0.0.1595872",
+ "typed-query-selector": "^2.12.1",
+ "webdriver-bidi-protocol": "0.4.1",
+ "ws": "^8.19.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+ "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-hex-prefix": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
- "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-hex-prefixed": "1.0.0"
+ "node": ">=10.0.0"
},
- "engines": {
- "node": ">=6.5.0",
- "npm": ">=3"
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
},
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "safe-buffer": "^5.1.0"
}
},
- "node_modules/surya": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.6.tgz",
- "integrity": "sha512-zaTYkRbms26cuOWu5jon5l4OsToHX7ZEflqTozXgq/XxUL3VY+tEnxT9Te2WVsA/sYgZPwcH92yQZJgljsss4g==",
+ "node_modules/raw-body": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@solidity-parser/parser": "^0.14.1",
- "c3-linearization": "^0.3.0",
- "colors": "^1.4.0",
- "graphviz": "0.0.9",
- "sha1-file": "^1.0.4",
- "treeify": "^1.1.0",
- "yargs": "^11.1.1"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
},
- "bin": {
- "surya": "bin/surya"
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/surya/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": ">=4.8"
+ "node": ">= 6"
}
},
- "node_modules/surya/node_modules/execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"dev": true,
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/surya/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dev": true,
+ "peer": true,
"dependencies": {
- "locate-path": "^2.0.0"
+ "resolve": "^1.1.6"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.10"
}
},
- "node_modules/surya/node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "node_modules/recursive-readdir": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
+ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "pump": "^3.0.0"
+ "minimatch": "^3.0.5"
},
"engines": {
- "node": ">=6"
+ "node": ">=6.0.0"
}
},
- "node_modules/surya/node_modules/invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "node_modules/recursive-readdir/node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/surya/node_modules/lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "node_modules/recursive-readdir/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "invert-kv": "^2.0.0"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=6"
+ "node": "*"
}
},
- "node_modules/surya/node_modules/locate-path": {
+ "node_modules/reduce-flatten": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
+ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
"dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/surya/node_modules/mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
"dev": true,
- "dependencies": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- },
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=6"
+ "node": ">=0.10"
}
},
- "node_modules/surya/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
- "node_modules/surya/node_modules/os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
- "dependencies": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- },
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
- "node_modules/surya/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "node_modules/resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "p-try": "^1.0.0"
+ "path-parse": "^1.0.6"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/surya/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
- "node_modules/surya/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=4"
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "node_modules/surya/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "node_modules/ripemd160": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz",
+ "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "hash-base": "^3.1.2",
+ "inherits": "^2.0.4"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 0.8"
}
},
- "node_modules/surya/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/rlp": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz",
+ "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==",
"dev": true,
+ "license": "MPL-2.0",
+ "peer": true,
+ "dependencies": {
+ "bn.js": "^5.2.0"
+ },
"bin": {
- "semver": "bin/semver"
+ "rlp": "bin/rlp"
}
},
- "node_modules/surya/node_modules/yargs": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz",
- "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==",
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.1.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
+ "queue-microtask": "^1.2.2"
}
},
- "node_modules/surya/node_modules/yargs-parser": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
- "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==",
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
- "dependencies": {
- "camelcase": "^4.1.0"
+ "license": "MIT"
+ },
+ "node_modules/sc-istanbul": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz",
+ "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "abbrev": "1.0.x",
+ "async": "1.x",
+ "escodegen": "1.8.x",
+ "esprima": "2.7.x",
+ "glob": "^5.0.15",
+ "handlebars": "^4.0.1",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "once": "1.x",
+ "resolve": "1.1.x",
+ "supports-color": "^3.1.0",
+ "which": "^1.1.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "istanbul": "lib/cli.js"
}
},
- "node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "node_modules/sc-istanbul/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
+ "sprintf-js": "~1.0.2"
}
},
- "node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "node_modules/sc-istanbul/node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "engines": {
- "node": ">=6"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "node_modules/sc-istanbul/node_modules/glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">= 6"
+ "node": "*"
}
},
- "node_modules/temp": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz",
- "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==",
+ "node_modules/sc-istanbul/node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
"dev": true,
- "engines": [
- "node >=0.4.0"
- ]
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/timers-ext": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
- "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+ "node_modules/sc-istanbul/node_modules/js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
- "dependencies": {
- "rimraf": "^3.0.0"
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
},
"engines": {
- "node": ">=8.17.0"
+ "node": ">=4"
}
},
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "node_modules/sc-istanbul/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
+ "license": "ISC",
"peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
- "node": ">=0.6"
+ "node": "*"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
+ "node_modules/sc-istanbul/node_modules/resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
},
- "node_modules/treeify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
- "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
+ "node_modules/sc-istanbul/node_modules/supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^1.0.0"
+ },
"engines": {
- "node": ">=0.6"
+ "node": ">=0.8.0"
}
},
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "node_modules/scrypt-js": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
+ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/tsort": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz",
- "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==",
+ "node_modules/secp256k1": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz",
+ "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==",
"dev": true,
- "peer": true
+ "hasInstallScript": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "elliptic": "^6.5.7",
+ "node-addon-api": "^5.0.0",
+ "node-gyp-build": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
},
- "node_modules/tweetnacl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
- "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+ "node_modules/secp256k1/node_modules/node-addon-api": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/tweetnacl-util": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz",
- "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==",
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/type": {
+ "node_modules/setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "node_modules/sha.js": {
+ "version": "2.4.12",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
+ "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
"dev": true,
+ "license": "(MIT AND BSD-3-Clause)",
"peer": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.0"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ },
"engines": {
- "node": ">=10"
+ "node": ">= 0.10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "node_modules/sha.js/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true,
- "dependencies": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
},
- "node_modules/undici": {
- "version": "5.22.1",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz",
- "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==",
+ "node_modules/sha1": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
+ "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==",
"dev": true,
+ "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
- "busboy": "^1.6.0"
+ "charenc": ">= 0.0.1",
+ "crypt": ">= 0.0.1"
},
"engines": {
- "node": ">=14.0"
+ "node": "*"
}
},
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "node_modules/sha1-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-2.0.1.tgz",
+ "integrity": "sha512-L4Kum9Lp8cWqcGKycZcXxR6spUoG4idDIUzAKjPiELnIZWxiFlZ5HFVzFxVxuWuGPsrraeL0JoGk0nFZ7AGFEQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasha": "^5.2.0"
+ },
"engines": {
- "node": ">= 4.0.0"
+ "node": ">=10"
}
},
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "node_modules/shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dev": true,
+ "license": "BSD-3-Clause",
"peer": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
"engines": {
- "node": ">= 0.8"
+ "node": ">=4"
}
},
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "node_modules/shelljs/node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "bin": {
- "uuid": "dist/bin/uuid"
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "node_modules/shelljs/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/shelljs/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "isexe": "^2.0.0"
+ "brace-expansion": "^1.1.7"
},
- "bin": {
- "which": "bin/which"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
- "dev": true
- },
- "node_modules/workerpool": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "node_modules/wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
}
},
- "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "number-is-nan": "^1.0.0"
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
}
},
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 14"
}
},
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "node_modules/socks-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 14"
}
},
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "node_modules/sol2uml": {
+ "version": "2.5.26",
+ "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.26.tgz",
+ "integrity": "sha512-lq7ktw4yLDcgF8em5NXaCyKJmd6qgDIxSG/onWT4CGLQeWufauBnGHuTRf/yYY1DCPmpF9PENQ5hcRPSAIqRcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@aduh95/viz.js": "^3.7.0",
+ "@solidity-parser/parser": "^0.20.1",
+ "axios": "^1.13.6",
+ "axios-debug-log": "^1.0.0",
+ "cli-color": "^2.0.4",
+ "commander": "^12.1.0",
+ "convert-svg-to-png": "^0.7.1",
+ "debug": "^4.4.1",
+ "diff-match-patch": "^1.0.5",
+ "ethers": "^6.16.0",
+ "js-graph-algorithms": "^1.0.18",
+ "klaw": "^4.1.0",
+ "puppeteer": "^24.37.5"
+ },
+ "bin": {
+ "sol2uml": "lib/sol2uml.js"
+ }
},
- "node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "node_modules/sol2uml/node_modules/commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8.3.0"
+ "node": ">=18"
+ }
+ },
+ "node_modules/solc": {
+ "version": "0.8.26",
+ "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz",
+ "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "command-exists": "^1.2.8",
+ "commander": "^8.1.0",
+ "follow-redirects": "^1.12.1",
+ "js-sha3": "0.8.0",
+ "memorystream": "^0.3.1",
+ "semver": "^5.5.0",
+ "tmp": "0.0.33"
},
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "bin": {
+ "solcjs": "solc.js"
},
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "node_modules/y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
+ "node_modules/solc/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
},
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+ "node_modules/solc/node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
+ "os-tmpdir": "~1.0.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=0.6.0"
}
},
- "node_modules/yargs-unparser/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "node_modules/solidity-coverage": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz",
+ "integrity": "sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow==",
"dev": true,
+ "license": "ISC",
"peer": true,
- "engines": {
- "node": ">=10"
+ "dependencies": {
+ "@ethersproject/abi": "^5.0.9",
+ "@solidity-parser/parser": "^0.20.1",
+ "chalk": "^2.4.2",
+ "death": "^1.1.0",
+ "difflib": "^0.2.4",
+ "fs-extra": "^8.1.0",
+ "ghost-testrpc": "^0.0.2",
+ "global-modules": "^2.0.0",
+ "globby": "^10.0.1",
+ "jsonschema": "^1.2.4",
+ "lodash": "^4.17.21",
+ "mocha": "^10.2.0",
+ "node-emoji": "^1.10.0",
+ "pify": "^4.0.1",
+ "recursive-readdir": "^2.2.2",
+ "sc-istanbul": "^0.4.5",
+ "semver": "^7.3.4",
+ "shelljs": "^0.8.3",
+ "web3-utils": "^1.3.6"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "bin": {
+ "solidity-coverage": "plugins/bin.js"
+ },
+ "peerDependencies": {
+ "hardhat": "^2.11.0"
}
},
- "node_modules/yargs-unparser/node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+ "node_modules/solidity-coverage/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=10"
+ "dependencies": {
+ "color-convert": "^1.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "node_modules/solidity-coverage/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "node_modules/solidity-coverage/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "dependencies": {
+ "color-name": "1.1.3"
}
- }
- },
- "dependencies": {
- "@aduh95/viz.js": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz",
- "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==",
- "dev": true
},
- "@chainsafe/as-sha256": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz",
- "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==",
+ "node_modules/solidity-coverage/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "@chainsafe/persistent-merkle-tree": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz",
- "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==",
+ "node_modules/solidity-coverage/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@chainsafe/as-sha256": "^0.3.1"
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "@chainsafe/ssz": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz",
- "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==",
+ "node_modules/solidity-coverage/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@chainsafe/as-sha256": "^0.3.1",
- "@chainsafe/persistent-merkle-tree": "^0.4.2",
- "case": "^1.6.3"
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
}
},
- "@ethersproject/abi": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz",
- "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==",
+ "node_modules/solidity-coverage/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
- "requires": {
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
}
},
- "@ethersproject/abstract-provider": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz",
- "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==",
+ "node_modules/solidity-coverage/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
- "requires": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/networks": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/web": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "@ethersproject/abstract-signer": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz",
- "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==",
+ "node_modules/solidity-coverage/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
- "requires": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0"
+ "license": "ISC",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "@ethersproject/address": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz",
- "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==",
+ "node_modules/solidity-coverage/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
- "requires": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "@ethersproject/base64": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz",
- "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==",
- "dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0"
+ "node_modules/solidity-coverage/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
}
},
- "@ethersproject/basex": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz",
- "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==",
+ "node_modules/source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/properties": "^5.7.0"
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "amdefine": ">=0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "@ethersproject/bignumber": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz",
- "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==",
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "bn.js": "^5.2.1"
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
}
},
- "@ethersproject/bytes": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz",
- "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==",
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "requires": {
- "@ethersproject/logger": "^5.7.0"
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "@ethersproject/constants": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz",
- "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==",
+ "node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
"dev": true,
- "requires": {
- "@ethersproject/bignumber": "^5.7.0"
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "readable-stream": "^3.0.0"
}
},
- "@ethersproject/contracts": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz",
- "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==",
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true,
- "requires": {
- "@ethersproject/abi": "^5.7.0",
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0"
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
+ "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=6"
}
},
- "@ethersproject/hash": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz",
- "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==",
+ "node_modules/stacktrace-parser/node_modules/type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
"dev": true,
- "requires": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/hdnode": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz",
- "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==",
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
"dev": true,
- "requires": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/basex": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/pbkdf2": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/wordlists": "^5.7.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "@ethersproject/json-wallets": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz",
- "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==",
+ "node_modules/streamx": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz",
+ "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==",
"dev": true,
- "requires": {
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hdnode": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/pbkdf2": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "aes-js": "3.0.0",
- "scrypt-js": "3.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
}
},
- "@ethersproject/keccak256": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz",
- "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==",
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "js-sha3": "0.8.0"
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
- "@ethersproject/logger": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz",
- "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==",
- "dev": true
+ "node_modules/string-format": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz",
+ "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==",
+ "dev": true,
+ "license": "WTFPL OR MIT",
+ "peer": true
},
- "@ethersproject/networks": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz",
- "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==",
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
- "requires": {
- "@ethersproject/logger": "^5.7.0"
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/pbkdf2": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz",
- "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==",
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/properties": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz",
- "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==",
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "requires": {
- "@ethersproject/logger": "^5.7.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/providers": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz",
- "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==",
- "dev": true,
- "requires": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/basex": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/networks": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/strings": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/web": "^5.7.0",
- "bech32": "1.1.4",
- "ws": "7.4.6"
- }
- },
- "@ethersproject/random": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz",
- "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==",
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/rlp": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz",
- "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==",
+ "node_modules/strip-hex-prefix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
+ "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-hex-prefixed": "1.0.0"
+ },
+ "engines": {
+ "node": ">=6.5.0",
+ "npm": ">=3"
}
},
- "@ethersproject/sha2": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz",
- "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==",
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "hash.js": "1.1.7"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "@ethersproject/signing-key": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz",
- "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==",
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "bn.js": "^5.2.1",
- "elliptic": "6.5.4",
- "hash.js": "1.1.7"
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "@ethersproject/solidity": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz",
- "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==",
+ "node_modules/surya": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.13.tgz",
+ "integrity": "sha512-ff2YmkYu9+u9A1tUv6cEuQDhLw1N+++iI+ZenXyhYR7YmaiQ19h32p2VchBn6zy3JPcfpvBZjf/aEmLbSMW1WA==",
"dev": true,
- "requires": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/sha2": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@solidity-parser/parser": "^0.16.1",
+ "c3-linearization": "^0.3.0",
+ "colors": "^1.4.0",
+ "graphviz": "0.0.9",
+ "sha1-file": "^2.0.0",
+ "treeify": "^1.1.0",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "surya": "bin/surya"
}
},
- "@ethersproject/strings": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz",
- "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==",
+ "node_modules/surya/node_modules/@solidity-parser/parser": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz",
+ "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "license": "MIT",
+ "dependencies": {
+ "antlr4ts": "^0.5.0-alpha.4"
}
},
- "@ethersproject/transactions": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz",
- "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==",
+ "node_modules/surya/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
- "requires": {
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/rlp": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0"
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "@ethersproject/units": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz",
- "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==",
+ "node_modules/surya/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
- "requires": {
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/constants": "^5.7.0",
- "@ethersproject/logger": "^5.7.0"
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
}
},
- "@ethersproject/wallet": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz",
- "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==",
+ "node_modules/table": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
"dev": true,
- "requires": {
- "@ethersproject/abstract-provider": "^5.7.0",
- "@ethersproject/abstract-signer": "^5.7.0",
- "@ethersproject/address": "^5.7.0",
- "@ethersproject/bignumber": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/hdnode": "^5.7.0",
- "@ethersproject/json-wallets": "^5.7.0",
- "@ethersproject/keccak256": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/random": "^5.7.0",
- "@ethersproject/signing-key": "^5.7.0",
- "@ethersproject/transactions": "^5.7.0",
- "@ethersproject/wordlists": "^5.7.0"
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "@ethersproject/web": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz",
- "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==",
+ "node_modules/table-layout": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
+ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
"dev": true,
- "requires": {
- "@ethersproject/base64": "^5.7.0",
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-back": "^4.0.1",
+ "deep-extend": "~0.6.0",
+ "typical": "^5.2.0",
+ "wordwrapjs": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "@ethersproject/wordlists": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz",
- "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==",
+ "node_modules/table-layout/node_modules/array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
"dev": true,
- "requires": {
- "@ethersproject/bytes": "^5.7.0",
- "@ethersproject/hash": "^5.7.0",
- "@ethersproject/logger": "^5.7.0",
- "@ethersproject/properties": "^5.7.0",
- "@ethersproject/strings": "^5.7.0"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
}
},
- "@metamask/eth-sig-util": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz",
- "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==",
+ "node_modules/table-layout/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "ethereumjs-abi": "^0.6.8",
- "ethereumjs-util": "^6.2.1",
- "ethjs-util": "^0.1.6",
- "tweetnacl": "^1.0.3",
- "tweetnacl-util": "^0.15.1"
+ "engines": {
+ "node": ">=8"
}
},
- "@noble/hashes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz",
- "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==",
+ "node_modules/tar-fs": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz",
+ "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
+ }
},
- "@noble/secp256k1": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
- "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
+ "node_modules/tar-stream": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz",
+ "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "bare-fs": "^4.5.5",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
},
- "@nomicfoundation/ethereumjs-block": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz",
- "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==",
+ "node_modules/teex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
"dev": true,
- "peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "ethereum-cryptography": "0.1.3",
- "ethers": "^5.7.1"
- },
+ "license": "MIT",
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- }
+ "streamx": "^2.12.5"
}
},
- "@nomicfoundation/ethereumjs-blockchain": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz",
- "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==",
+ "node_modules/temp": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz",
+ "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==",
"dev": true,
- "peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-ethash": "3.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "abstract-level": "^1.0.3",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "level": "^8.0.0",
- "lru-cache": "^5.1.1",
- "memory-level": "^1.0.0"
- },
+ "engines": [
+ "node >=0.4.0"
+ ]
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz",
+ "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
+ "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "peer": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "peer": true
- }
+ "b4a": "^1.6.4"
}
},
- "@nomicfoundation/ethereumjs-common": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz",
- "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==",
+ "node_modules/through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "crc-32": "^1.2.0"
+ "dependencies": {
+ "readable-stream": "3"
}
},
- "@nomicfoundation/ethereumjs-ethash": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz",
- "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==",
+ "node_modules/timers-ext": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz",
+ "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==",
"dev": true,
- "peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "abstract-level": "^1.0.3",
- "bigint-crypto-utils": "^3.0.23",
- "ethereum-cryptography": "0.1.3"
+ "license": "ISC",
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "next-tick": "^1.1.0"
},
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- }
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "@nomicfoundation/ethereumjs-evm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz",
- "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==",
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
- "peer": true,
- "requires": {
- "@ethersproject/providers": "^5.7.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "mcl-wasm": "^0.7.1",
- "rustbn.js": "~0.2.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
},
- "dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
}
}
},
- "@nomicfoundation/ethereumjs-rlp": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz",
- "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==",
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
- "@nomicfoundation/ethereumjs-statemanager": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz",
- "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==",
+ "node_modules/tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
"dev": true,
- "peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "ethers": "^5.7.1",
- "js-sdsl": "^4.1.4"
- },
- "dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- }
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
}
},
- "@nomicfoundation/ethereumjs-trie": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz",
- "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==",
+ "node_modules/to-buffer": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz",
+ "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "@types/readable-stream": "^2.3.13",
- "ethereum-cryptography": "0.1.3",
- "readable-stream": "^3.6.0"
- },
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
+ "isarray": "^2.0.5",
+ "safe-buffer": "^5.2.1",
+ "typed-array-buffer": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/to-buffer/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
},
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "peer": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
}
- }
+ ],
+ "license": "MIT",
+ "peer": true
},
- "@nomicfoundation/ethereumjs-tx": {
+ "node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz",
- "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
- "peer": true,
- "requires": {
- "@chainsafe/ssz": "^0.9.2",
- "@ethersproject/providers": "^5.7.2",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "ethereum-cryptography": "0.1.3"
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
},
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/treeify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
+ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/ts-command-line-args": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz",
+ "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- }
+ "chalk": "^4.1.0",
+ "command-line-args": "^5.1.1",
+ "command-line-usage": "^6.1.0",
+ "string-format": "^2.0.0"
+ },
+ "bin": {
+ "write-markdown": "dist/write-markdown.js"
}
},
- "@nomicfoundation/ethereumjs-util": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz",
- "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==",
+ "node_modules/ts-essentials": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz",
+ "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@chainsafe/ssz": "^0.10.0",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "ethereum-cryptography": "0.1.3"
+ "peerDependencies": {
+ "typescript": ">=3.7.0"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
},
- "dependencies": {
- "@chainsafe/persistent-merkle-tree": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz",
- "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==",
- "dev": true,
- "peer": true,
- "requires": {
- "@chainsafe/as-sha256": "^0.3.1"
- }
- },
- "@chainsafe/ssz": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz",
- "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==",
- "dev": true,
- "peer": true,
- "requires": {
- "@chainsafe/as-sha256": "^0.3.1",
- "@chainsafe/persistent-merkle-tree": "^0.5.0"
- }
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
},
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
+ "@swc/wasm": {
+ "optional": true
}
}
},
- "@nomicfoundation/ethereumjs-vm": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz",
- "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==",
+ "node_modules/ts-node/node_modules/diff": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
"dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/tsort": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz",
+ "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-blockchain": "7.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-evm": "2.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-statemanager": "2.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "debug": "^4.3.3",
- "ethereum-cryptography": "0.1.3",
- "mcl-wasm": "^0.7.1",
- "rustbn.js": "~0.2.0"
- },
"dependencies": {
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
- }
- }
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "@nomicfoundation/hardhat-foundry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.0.1.tgz",
- "integrity": "sha512-sQEaX3rik6Gclmek4MqCyOc9+vOM0ZS40eUARrB6K9t6wthqCwJ29CClfxLdbrjn/3MM5hX8ioD+/9OqdGVxSQ==",
+ "node_modules/type-detect": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
+ "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
"dev": true,
- "requires": {
- "chalk": "^2.4.2"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
},
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "@nomicfoundation/solidity-analyzer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz",
- "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==",
- "dev": true,
- "peer": true,
- "requires": {
- "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1",
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1",
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1"
+ "node_modules/typechain": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz",
+ "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/prettier": "^2.1.1",
+ "debug": "^4.3.1",
+ "fs-extra": "^7.0.0",
+ "glob": "7.1.7",
+ "js-sha3": "^0.8.0",
+ "lodash": "^4.17.15",
+ "mkdirp": "^1.0.4",
+ "prettier": "^2.3.1",
+ "ts-command-line-args": "^2.2.0",
+ "ts-essentials": "^7.0.1"
+ },
+ "bin": {
+ "typechain": "dist/cli/cli.js"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.3.0"
}
},
- "@nomicfoundation/solidity-analyzer-darwin-arm64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz",
- "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-darwin-x64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz",
- "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-freebsd-x64": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz",
- "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz",
- "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz",
- "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz",
- "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz",
- "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz",
- "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==",
+ "node_modules/typechain/node_modules/brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz",
- "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz",
- "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "@scure/base": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz",
- "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==",
- "dev": true,
- "peer": true
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
},
- "@scure/bip32": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz",
- "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==",
+ "node_modules/typechain/node_modules/fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@noble/hashes": "~1.2.0",
- "@noble/secp256k1": "~1.7.0",
- "@scure/base": "~1.1.0"
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
}
},
- "@scure/bip39": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz",
- "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==",
+ "node_modules/typechain/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
+ "license": "ISC",
"peer": true,
- "requires": {
- "@noble/hashes": "~1.2.0",
- "@scure/base": "~1.1.0"
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "@sentry/core": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz",
- "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==",
+ "node_modules/typechain/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
}
},
- "@sentry/hub": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz",
- "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==",
+ "node_modules/typechain/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
+ "license": "ISC",
"peer": true,
- "requires": {
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "@sentry/minimal": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz",
- "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==",
+ "node_modules/typechain/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@sentry/hub": "5.30.0",
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "@sentry/node": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz",
- "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==",
+ "node_modules/typechain/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@sentry/core": "5.30.0",
- "@sentry/hub": "5.30.0",
- "@sentry/tracing": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "cookie": "^0.4.1",
- "https-proxy-agent": "^5.0.0",
- "lru_map": "^0.3.3",
- "tslib": "^1.9.3"
+ "engines": {
+ "node": ">= 4.0.0"
}
},
- "@sentry/tracing": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz",
- "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==",
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "@sentry/types": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz",
- "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==",
+ "node_modules/typed-query-selector": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz",
+ "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
- "@sentry/utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz",
- "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==",
+ "node_modules/typescript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
"dev": true,
+ "license": "Apache-2.0",
"peer": true,
- "requires": {
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
}
},
- "@solidity-parser/parser": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz",
- "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==",
+ "node_modules/typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
"dev": true,
- "requires": {
- "antlr4ts": "^0.5.0-alpha.4"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
}
},
- "@types/bn.js": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz",
- "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==",
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"dev": true,
+ "license": "BSD-2-Clause",
+ "optional": true,
"peer": true,
- "requires": {
- "@types/node": "*"
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "@types/debug": {
- "version": "4.1.7",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
- "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
+ "node_modules/undici": {
+ "version": "5.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"dev": true,
- "requires": {
- "@types/ms": "*"
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
}
},
- "@types/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==",
+ "node_modules/undici-types": {
+ "version": "7.19.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
+ "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
- "@types/ms": {
- "version": "0.7.31",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
- "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==",
- "dev": true
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
},
- "@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/utf8": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
+ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "@types/pbkdf2": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz",
- "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==",
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true,
- "peer": true,
- "requires": {
- "@types/node": "*"
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
- "@types/readable-stream": {
- "version": "2.3.15",
- "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz",
- "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==",
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true,
- "peer": true,
- "requires": {
- "@types/node": "*",
- "safe-buffer": "~5.1.1"
- }
+ "license": "MIT",
+ "peer": true
},
- "@types/secp256k1": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz",
- "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==",
+ "node_modules/viem": {
+ "version": "2.47.18",
+ "resolved": "https://registry.npmjs.org/viem/-/viem-2.47.18.tgz",
+ "integrity": "sha512-m3kr+/i8MddeY5fmB2y2v5B0vDL0x8R4v/8gai4Lh4jh8KOWlQqml7PFLtilNomoDm3mINxdA0JnYBJfknNoEg==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
"peer": true,
- "requires": {
- "@types/node": "*"
+ "dependencies": {
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "1.8.0",
+ "@scure/bip32": "1.7.0",
+ "@scure/bip39": "1.6.0",
+ "abitype": "1.2.3",
+ "isows": "1.0.7",
+ "ox": "0.14.15",
+ "ws": "8.18.3"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "@types/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+ "node_modules/viem/node_modules/@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
"dev": true,
- "optional": true,
- "requires": {
- "@types/node": "*"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "node_modules/viem/node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "event-target-shim": "^5.0.0"
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "abstract-level": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz",
- "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==",
+ "node_modules/viem/node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "buffer": "^6.0.3",
- "catering": "^2.1.0",
- "is-buffer": "^2.0.5",
- "level-supports": "^4.0.0",
- "level-transcoder": "^1.0.1",
- "module-error": "^1.0.1",
- "queue-microtask": "^1.2.3"
+ "engines": {
+ "node": ">=10.0.0"
},
- "dependencies": {
- "buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "dev": true,
- "peer": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
},
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true,
- "peer": true
+ "utf-8-validate": {
+ "optional": true
}
}
},
- "adm-zip": {
- "version": "0.4.16",
- "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
- "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
- "dev": true,
- "peer": true
- },
- "aes-js": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
- "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==",
- "dev": true
- },
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "node_modules/web3-utils": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz",
+ "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==",
"dev": true,
- "requires": {
- "debug": "4"
+ "license": "LGPL-3.0",
+ "peer": true,
+ "dependencies": {
+ "@ethereumjs/util": "^8.1.0",
+ "bn.js": "^5.2.1",
+ "ethereum-bloom-filters": "^1.0.6",
+ "ethereum-cryptography": "^2.1.2",
+ "ethjs-unit": "0.1.6",
+ "number-to-bn": "1.7.0",
+ "randombytes": "^2.1.0",
+ "utf8": "3.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "node_modules/web3-utils/node_modules/@ethereumjs/rlp": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz",
+ "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==",
"dev": true,
+ "license": "MPL-2.0",
"peer": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
+ "bin": {
+ "rlp": "bin/rlp"
+ },
+ "engines": {
+ "node": ">=14"
}
},
- "ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "node_modules/web3-utils/node_modules/@ethereumjs/util": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz",
+ "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==",
"dev": true,
- "peer": true
+ "license": "MPL-2.0",
+ "peer": true,
+ "dependencies": {
+ "@ethereumjs/rlp": "^4.0.1",
+ "ethereum-cryptography": "^2.0.0",
+ "micro-ftch": "^0.3.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
},
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "node_modules/web3-utils/node_modules/@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "type-fest": "^0.21.3"
+ "dependencies": {
+ "@noble/hashes": "1.4.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/web3-utils/node_modules/@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
"dev": true,
- "requires": {
- "color-convert": "^2.0.1"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "antlr4ts": {
- "version": "0.5.0-alpha.4",
- "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
- "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==",
- "dev": true
- },
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "node_modules/web3-utils/node_modules/@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true,
- "peer": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
},
- "axios": {
- "version": "1.7.9",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
- "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "node_modules/web3-utils/node_modules/@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
"dev": true,
- "requires": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "axios-debug-log": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/axios-debug-log/-/axios-debug-log-1.0.0.tgz",
- "integrity": "sha512-ZjMaEBEij9w+Vbk2Uc3XflchTT7j9rZdYD/snN+XQ5FRDq1QjZNhh0Izb3KSyarU5vTkiCvJyg1xDiQBHZZB9w==",
+ "node_modules/web3-utils/node_modules/@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
"dev": true,
- "requires": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0"
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base-x": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz",
- "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==",
+ "node_modules/web3-utils/node_modules/ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
}
},
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
- },
- "bech32": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
- "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==",
- "dev": true
- },
- "bigint-crypto-utils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz",
- "integrity": "sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw==",
+ "node_modules/webdriver-bidi-protocol": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz",
+ "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==",
"dev": true,
- "peer": true
+ "license": "Apache-2.0"
},
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
"dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
},
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "blakejs": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz",
- "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==",
- "dev": true,
- "peer": true
- },
- "bn.js": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
- "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
- "dev": true
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
- },
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
- "dev": true
- },
- "browser-level": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz",
- "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==",
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"peer": true,
- "requires": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.1",
- "module-error": "^1.0.2",
- "run-parallel-limit": "^1.1.0"
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
}
},
- "browserify-aes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "node_modules/which-typed-array": {
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "bs58": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
- "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==",
+ "node_modules/widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
"dev": true,
- "peer": true,
- "requires": {
- "base-x": "^3.0.2"
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "bs58check": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz",
- "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==",
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "bs58": "^4.0.0",
- "create-hash": "^1.1.0",
- "safe-buffer": "^5.1.2"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true,
+ "license": "MIT",
"peer": true
},
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "node_modules/wordwrapjs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
+ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "reduce-flatten": "^2.0.0",
+ "typical": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
},
- "busboy": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
- "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "node_modules/wordwrapjs/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "streamsearch": "^1.1.0"
+ "engines": {
+ "node": ">=8"
}
},
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "node_modules/workerpool": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
+ "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
"dev": true,
- "peer": true
+ "license": "Apache-2.0"
},
- "c3-linearization": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/c3-linearization/-/c3-linearization-0.3.0.tgz",
- "integrity": "sha512-eQNsZQhFSJAhrNrITy2FpKh7EHS98q/pniDtQhndWqqsvayiPeqZ9T6I9V9PsHcm0nc+ZYJHKUvI/hh37I33HQ==",
- "dev": true
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
},
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"peer": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "case": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz",
- "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==",
- "dev": true,
- "peer": true
- },
- "catering": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz",
- "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==",
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
},
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
}
},
- "cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
- "requires": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
- "requires": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
}
},
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "ci-info": {
+ "node_modules/yargs-unparser": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
- "peer": true
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^6.0.0",
+ "decamelize": "^4.0.0",
+ "flat": "^5.0.2",
+ "is-plain-obj": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "node_modules/yargs-unparser/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
- "peer": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "classic-level": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz",
- "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==",
+ "node_modules/yargs-unparser/node_modules/decamelize": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
- "peer": true,
- "requires": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.0",
- "module-error": "^1.0.1",
- "napi-macros": "^2.2.2",
- "node-gyp-build": "^4.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "node_modules/yargs/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
- "peer": true
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
},
- "cli-color": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
- "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
- "requires": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.61",
- "es6-iterator": "^2.0.3",
- "memoizee": "^0.4.15",
- "timers-ext": "^0.1.7"
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
}
},
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
}
},
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "dev": true
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
- "requires": {
- "color-name": "~1.1.4"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ },
+ "dependencies": {
+ "@adraffy/ens-normalize": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz",
+ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==",
"dev": true
},
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "@aduh95/viz.js": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz",
+ "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==",
"dev": true
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
"requires": {
- "delayed-stream": "~1.0.0"
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
}
},
- "command-exists": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "dev": true
+ },
+ "@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
"dev": true,
+ "optional": true,
"peer": true
},
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ }
+ },
+ "@ethereumjs/rlp": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz",
+ "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==",
"dev": true
},
- "convert-svg-core": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.6.4.tgz",
- "integrity": "sha512-8mS0n7otc1lljTte4z7nDhihEakKCRq4w5ivMnIGeOZuD/OV/eDZNNEgGLV1ET3p+rMbnrZnX4lAcsf14WzD5w==",
+ "@ethereumjs/util": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz",
+ "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==",
"dev": true,
"requires": {
- "chalk": "^4.1.2",
- "cheerio": "^1.0.0-rc.11",
- "commander": "^9.2.0",
- "file-url": "^3.0.0",
- "get-stdin": "^8.0.0",
- "glob": "^8.0.1",
- "lodash.omit": "^4.5.0",
- "lodash.pick": "^4.4.0",
- "pollock": "^0.2.0",
- "puppeteer": "^13.7.0",
- "tmp": "^0.2.1"
+ "@ethereumjs/rlp": "^5.0.2",
+ "ethereum-cryptography": "^2.2.1"
},
"dependencies": {
- "commander": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
- "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
+ "@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
+ "dev": true,
+ "requires": {
+ "@noble/hashes": "1.4.0"
+ }
+ },
+ "@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
+ "dev": true
+ },
+ "@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true
+ },
+ "@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
+ "dev": true,
+ "requires": {
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ }
+ },
+ "@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
+ "dev": true,
+ "requires": {
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ }
+ },
+ "ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
+ "dev": true,
+ "requires": {
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
+ }
}
}
},
- "convert-svg-to-png": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.6.4.tgz",
- "integrity": "sha512-zHNTuVedkyuhMl+f+HMm2L7+TKDYCKFAqAmDqUr0dN7/xtgYe76PPAydjlFzeLbzEpGtEfhaA15q+ejpLaVo3g==",
+ "@ethersproject/abi": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
+ "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==",
"dev": true,
"requires": {
- "convert-svg-core": "^0.6.4"
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "@ethersproject/abstract-provider": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz",
+ "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==",
"dev": true,
- "peer": true
+ "requires": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0"
+ }
},
- "crc-32": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
- "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "@ethersproject/abstract-signer": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz",
+ "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==",
"dev": true,
- "peer": true
+ "requires": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
+ }
},
- "create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "@ethersproject/address": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz",
+ "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==",
"dev": true,
- "peer": true,
"requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0"
}
},
- "create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "@ethersproject/base64": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz",
+ "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==",
"dev": true,
- "peer": true,
"requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "@ethersproject/bytes": "^5.8.0"
}
},
- "cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "@ethersproject/bignumber": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz",
+ "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==",
"dev": true,
"requires": {
- "node-fetch": "2.6.7"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "bn.js": "^5.2.1"
}
},
- "css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "@ethersproject/bytes": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz",
+ "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==",
"dev": true,
"requires": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
+ "@ethersproject/logger": "^5.8.0"
}
},
- "css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true
- },
- "d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "@ethersproject/constants": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz",
+ "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==",
"dev": true,
"requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "@ethersproject/bignumber": "^5.8.0"
}
},
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "@ethersproject/hash": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz",
+ "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==",
"dev": true,
"requires": {
- "ms": "2.1.2"
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "@ethersproject/keccak256": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz",
+ "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==",
"dev": true,
- "peer": true
- },
- "devtools-protocol": {
- "version": "0.0.981744",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz",
- "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==",
- "dev": true
+ "requires": {
+ "@ethersproject/bytes": "^5.8.0",
+ "js-sha3": "0.8.0"
+ }
},
- "diff-match-patch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
- "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
+ "@ethersproject/logger": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz",
+ "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==",
"dev": true
},
- "dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "@ethersproject/networks": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz",
+ "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==",
"dev": true,
"requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "@ethersproject/logger": "^5.8.0"
}
},
- "domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true
+ "@ethersproject/properties": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz",
+ "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==",
+ "dev": true,
+ "requires": {
+ "@ethersproject/logger": "^5.8.0"
+ }
},
- "domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "@ethersproject/rlp": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz",
+ "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==",
"dev": true,
"requires": {
- "domelementtype": "^2.3.0"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
- "domutils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
- "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+ "@ethersproject/signing-key": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz",
+ "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==",
"dev": true,
"requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.1"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "bn.js": "^5.2.1",
+ "elliptic": "6.6.1",
+ "hash.js": "1.1.7"
}
},
- "elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "@ethersproject/strings": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz",
+ "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==",
"dev": true,
"requires": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
- }
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "peer": true
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "@ethersproject/transactions": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz",
+ "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==",
"dev": true,
"requires": {
- "once": "^1.4.0"
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0"
}
},
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "@ethersproject/units": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz",
+ "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==",
"dev": true,
"peer": true,
"requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "entities": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
- "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
- "dev": true
- },
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "peer": true
- },
- "es5-ext": {
- "version": "0.10.62",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
- "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
- "dev": true,
- "requires": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dev": true,
- "requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
}
},
- "es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "@ethersproject/web": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz",
+ "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "peer": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "@fastify/busboy": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
"dev": true
},
- "ethereum-cryptography": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz",
- "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==",
- "dev": true,
- "peer": true,
- "requires": {
- "@noble/hashes": "1.2.0",
- "@noble/secp256k1": "1.7.1",
- "@scure/bip32": "1.1.5",
- "@scure/bip39": "1.1.1"
- }
- },
- "ethereumjs-abi": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz",
- "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==",
+ "@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
"peer": true,
"requires": {
- "bn.js": "^4.11.8",
- "ethereumjs-util": "^6.0.0"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"peer": true
- }
- }
- },
- "ethereumjs-util": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz",
- "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/bn.js": "^4.11.3",
- "bn.js": "^4.11.0",
- "create-hash": "^1.1.2",
- "elliptic": "^6.5.2",
- "ethereum-cryptography": "^0.1.3",
- "ethjs-util": "0.1.6",
- "rlp": "^2.2.3"
- },
- "dependencies": {
- "@types/bn.js": {
- "version": "4.11.6",
- "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz",
- "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==",
+ },
+ "ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "peer": true
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "peer": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
"peer": true,
"requires": {
- "@types/node": "*"
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
}
},
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "ansi-regex": "^6.2.2"
+ }
},
- "ethereum-cryptography": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
- "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
"peer": true,
"requires": {
- "@types/pbkdf2": "^3.0.0",
- "@types/secp256k1": "^4.0.1",
- "blakejs": "^1.1.0",
- "browserify-aes": "^1.2.0",
- "bs58check": "^2.1.2",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "hash.js": "^1.1.7",
- "keccak": "^3.0.0",
- "pbkdf2": "^3.0.17",
- "randombytes": "^2.1.0",
- "safe-buffer": "^5.1.2",
- "scrypt-js": "^3.0.0",
- "secp256k1": "^4.0.1",
- "setimmediate": "^1.0.5"
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
}
}
}
},
- "ethers": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz",
- "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==",
- "dev": true,
- "requires": {
- "@ethersproject/abi": "5.7.0",
- "@ethersproject/abstract-provider": "5.7.0",
- "@ethersproject/abstract-signer": "5.7.0",
- "@ethersproject/address": "5.7.0",
- "@ethersproject/base64": "5.7.0",
- "@ethersproject/basex": "5.7.0",
- "@ethersproject/bignumber": "5.7.0",
- "@ethersproject/bytes": "5.7.0",
- "@ethersproject/constants": "5.7.0",
- "@ethersproject/contracts": "5.7.0",
- "@ethersproject/hash": "5.7.0",
- "@ethersproject/hdnode": "5.7.0",
- "@ethersproject/json-wallets": "5.7.0",
- "@ethersproject/keccak256": "5.7.0",
- "@ethersproject/logger": "5.7.0",
- "@ethersproject/networks": "5.7.1",
- "@ethersproject/pbkdf2": "5.7.0",
- "@ethersproject/properties": "5.7.0",
- "@ethersproject/providers": "5.7.2",
- "@ethersproject/random": "5.7.0",
- "@ethersproject/rlp": "5.7.0",
- "@ethersproject/sha2": "5.7.0",
- "@ethersproject/signing-key": "5.7.0",
- "@ethersproject/solidity": "5.7.0",
- "@ethersproject/strings": "5.7.0",
- "@ethersproject/transactions": "5.7.0",
- "@ethersproject/units": "5.7.0",
- "@ethersproject/wallet": "5.7.0",
- "@ethersproject/web": "5.7.1",
- "@ethersproject/wordlists": "5.7.0"
- }
- },
- "ethjs-util": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz",
- "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==",
- "dev": true,
- "peer": true,
- "requires": {
- "is-hex-prefixed": "1.0.0",
- "strip-hex-prefix": "1.0.0"
- }
- },
- "event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
+ "peer": true
},
- "event-target-shim": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
"peer": true
},
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"peer": true,
"requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "@noble/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
"dev": true,
- "requires": {
- "type": "^2.7.2"
- },
- "dependencies": {
- "type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
- "dev": true
- }
- }
+ "peer": true
},
- "extract-zip": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "@noble/curves": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
+ "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==",
"dev": true,
"requires": {
- "@types/yauzl": "^2.9.1",
- "debug": "^4.1.1",
- "get-stream": "^5.1.0",
- "yauzl": "^2.10.0"
+ "@noble/hashes": "1.3.2"
}
},
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
+ "@noble/hashes": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz",
+ "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==",
+ "dev": true
},
- "file-url": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz",
- "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==",
+ "@noble/secp256k1": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
+ "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
"dev": true
},
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
+ "peer": true,
"requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
}
},
- "flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"peer": true
},
- "follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
- "dev": true
- },
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "peer": true,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
}
},
- "fp-ts": {
- "version": "1.19.3",
- "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz",
- "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==",
+ "@nomicfoundation/edr": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.23.tgz",
+ "integrity": "sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==",
"dev": true,
- "peer": true
+ "requires": {
+ "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.23",
+ "@nomicfoundation/edr-darwin-x64": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.23",
+ "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.23",
+ "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.23"
+ }
+ },
+ "@nomicfoundation/edr-darwin-arm64": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.23.tgz",
+ "integrity": "sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==",
+ "dev": true
},
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "@nomicfoundation/edr-darwin-x64": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.23.tgz",
+ "integrity": "sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==",
"dev": true
},
- "fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dev": true,
- "peer": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
+ "@nomicfoundation/edr-linux-arm64-gnu": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.23.tgz",
+ "integrity": "sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==",
+ "dev": true
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "@nomicfoundation/edr-linux-arm64-musl": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.23.tgz",
+ "integrity": "sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==",
"dev": true
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true,
- "peer": true
+ "@nomicfoundation/edr-linux-x64-gnu": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.23.tgz",
+ "integrity": "sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==",
+ "dev": true
},
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true,
- "peer": true
+ "@nomicfoundation/edr-linux-x64-musl": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.23.tgz",
+ "integrity": "sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==",
+ "dev": true
},
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "@nomicfoundation/edr-win32-x64-msvc": {
+ "version": "0.12.0-next.23",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.23.tgz",
+ "integrity": "sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==",
"dev": true
},
- "get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "@nomicfoundation/hardhat-chai-matchers": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.1.2.tgz",
+ "integrity": "sha512-NlUlde/ycXw2bLzA2gWjjbxQaD9xIRbAF30nsoEprAWzH8dXEI1ILZUKZMyux9n9iygEXTzN0SDVjE6zWDZi9g==",
"dev": true,
"peer": true,
"requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "@types/chai-as-promised": "^7.1.3",
+ "chai-as-promised": "^7.1.1",
+ "deep-eql": "^4.0.1",
+ "ordinal": "^1.0.3"
}
},
- "get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
- "dev": true
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "@nomicfoundation/hardhat-ethers": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.3.tgz",
+ "integrity": "sha512-208JcDeVIl+7Wu3MhFUUtiA8TJ7r2Rn3Wr+lSx9PfsDTKkbsAsWPY6N6wQ4mtzDv0/pB9nIbJhkjoHe1EsgNsA==",
"dev": true,
+ "peer": true,
"requires": {
- "pump": "^3.0.0"
+ "debug": "^4.1.1",
+ "lodash.isequal": "^4.5.0"
}
},
- "glob": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
- "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+ "@nomicfoundation/hardhat-foundry": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.2.1.tgz",
+ "integrity": "sha512-pH1KeyI0sysgi7I7uQKPLXWl895EkuS6V41rSi820Ipqp/FScIwDh27RbevgC9zJ4ufSsSz34njm9cvRMGMNVA==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "picocolors": "^1.1.0"
}
},
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "@nomicfoundation/hardhat-ignition": {
+ "version": "0.15.16",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.16.tgz",
+ "integrity": "sha512-T0JTnuib7QcpsWkHCPLT7Z6F483EjTdcdjb1e00jqS9zTGCPqinPB66LLtR/duDLdvgoiCVS6K8WxTQkA/xR1Q==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "@nomicfoundation/ignition-core": "^0.15.15",
+ "@nomicfoundation/ignition-ui": "^0.15.13",
+ "chalk": "^4.0.0",
+ "debug": "^4.3.2",
+ "fs-extra": "^10.0.0",
+ "json5": "^2.2.3",
+ "prompts": "^2.4.2"
+ }
},
- "graphviz": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.9.tgz",
- "integrity": "sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg==",
+ "@nomicfoundation/hardhat-ignition-ethers": {
+ "version": "0.15.17",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.17.tgz",
+ "integrity": "sha512-io6Wrp1dUsJ94xEI3pw6qkPfhc9TFA+e6/+o16yQ8pvBTFMjgK5x8wIHKrrIHr9L3bkuTMtmDjyN4doqO2IqFQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "@nomicfoundation/hardhat-network-helpers": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.1.2.tgz",
+ "integrity": "sha512-p7HaUVDbLj7ikFivQVNhnfMHUBgiHYMwQWvGn9AriieuopGOELIrwj2KjyM2a6z70zai5YKO264Vwz+3UFJZPQ==",
"dev": true,
+ "peer": true,
"requires": {
- "temp": "~0.4.0"
+ "ethereumjs-util": "^7.1.4"
}
},
- "hardhat": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.14.0.tgz",
- "integrity": "sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ==",
+ "@nomicfoundation/hardhat-toolbox": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-6.1.2.tgz",
+ "integrity": "sha512-xKL2r43GC/UIcQzmtFSmj3L4KqLSQ4fK+kyUw0vbIp94nV+9o2ZkI1s3znB8EKXqitt9ClXo0qcKj9RKOFjqPQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "@nomicfoundation/hardhat-verify": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.3.tgz",
+ "integrity": "sha512-danbGjPp2WBhLkJdQy9/ARM3WQIK+7vwzE0urNem1qZJjh9f54Kf5f1xuQv8DvqewUAkuPxVt/7q4Grz5WjqSg==",
"dev": true,
"peer": true,
"requires": {
"@ethersproject/abi": "^5.1.2",
- "@metamask/eth-sig-util": "^4.0.0",
- "@nomicfoundation/ethereumjs-block": "5.0.1",
- "@nomicfoundation/ethereumjs-blockchain": "7.0.1",
- "@nomicfoundation/ethereumjs-common": "4.0.1",
- "@nomicfoundation/ethereumjs-evm": "2.0.1",
- "@nomicfoundation/ethereumjs-rlp": "5.0.1",
- "@nomicfoundation/ethereumjs-statemanager": "2.0.1",
- "@nomicfoundation/ethereumjs-trie": "6.0.1",
- "@nomicfoundation/ethereumjs-tx": "5.0.1",
- "@nomicfoundation/ethereumjs-util": "9.0.1",
- "@nomicfoundation/ethereumjs-vm": "7.0.1",
- "@nomicfoundation/solidity-analyzer": "^0.1.0",
- "@sentry/node": "^5.18.1",
- "@types/bn.js": "^5.1.0",
- "@types/lru-cache": "^5.1.0",
- "abort-controller": "^3.0.0",
- "adm-zip": "^0.4.16",
- "aggregate-error": "^3.0.0",
- "ansi-escapes": "^4.3.0",
- "chalk": "^2.4.2",
- "chokidar": "^3.4.0",
- "ci-info": "^2.0.0",
+ "@ethersproject/address": "^5.0.2",
+ "cbor": "^8.1.0",
"debug": "^4.1.1",
- "enquirer": "^2.3.0",
- "env-paths": "^2.2.0",
- "ethereum-cryptography": "^1.0.3",
- "ethereumjs-abi": "^0.6.8",
- "find-up": "^2.1.0",
- "fp-ts": "1.19.3",
- "fs-extra": "^7.0.1",
- "glob": "7.2.0",
- "immutable": "^4.0.0-rc.12",
- "io-ts": "1.10.4",
- "keccak": "^3.0.2",
- "lodash": "^4.17.11",
- "mnemonist": "^0.38.0",
- "mocha": "^10.0.0",
- "p-map": "^4.0.0",
- "qs": "^6.7.0",
- "raw-body": "^2.4.1",
- "resolve": "1.17.0",
+ "lodash.clonedeep": "^4.5.0",
+ "picocolors": "^1.1.0",
"semver": "^6.3.0",
- "solc": "0.7.3",
- "source-map-support": "^0.5.13",
- "stacktrace-parser": "^0.1.10",
- "tsort": "0.0.1",
- "undici": "^5.14.0",
- "uuid": "^8.3.2",
- "ws": "^7.4.6"
+ "table": "^6.8.0",
+ "undici": "^5.14.0"
+ }
+ },
+ "@nomicfoundation/ignition-core": {
+ "version": "0.15.15",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.15.tgz",
+ "integrity": "sha512-JdKFxYknTfOYtFXMN6iFJ1vALJPednuB+9p9OwGIRdoI6HYSh4ZBzyRURgyXtHFyaJ/SF9lBpsYV9/1zEpcYwg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@ethersproject/address": "5.6.1",
+ "@nomicfoundation/solidity-analyzer": "^0.1.1",
+ "cbor": "^9.0.0",
+ "debug": "^4.3.2",
+ "ethers": "^6.14.0",
+ "fs-extra": "^10.0.0",
+ "immer": "10.0.2",
+ "lodash": "4.17.21",
+ "ndjson": "2.0.0"
},
"dependencies": {
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true,
- "peer": true
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "peer": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "peer": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "peer": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "peer": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "peer": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "peer": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true,
- "peer": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "peer": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "@ethersproject/address": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz",
+ "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==",
"dev": true,
"peer": true,
"requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "@ethersproject/bignumber": "^5.6.2",
+ "@ethersproject/bytes": "^5.6.1",
+ "@ethersproject/keccak256": "^5.6.1",
+ "@ethersproject/logger": "^5.6.0",
+ "@ethersproject/rlp": "^5.6.1"
}
},
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "cbor": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz",
+ "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==",
"dev": true,
"peer": true,
"requires": {
- "color-name": "1.1.3"
+ "nofilter": "^3.1.0"
}
+ }
+ }
+ },
+ "@nomicfoundation/ignition-ui": {
+ "version": "0.15.13",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.13.tgz",
+ "integrity": "sha512-HbTszdN1iDHCkUS9hLeooqnLEW2U45FaqFwFEYT8nIno2prFZhG+n68JEERjmfFCB5u0WgbuJwk3CgLoqtSL7Q==",
+ "dev": true,
+ "peer": true
+ },
+ "@nomicfoundation/solidity-analyzer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz",
+ "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==",
+ "dev": true,
+ "requires": {
+ "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2",
+ "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2"
+ }
+ },
+ "@nomicfoundation/solidity-analyzer-darwin-arm64": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz",
+ "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-darwin-x64": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz",
+ "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz",
+ "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-linux-arm64-musl": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz",
+ "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-linux-x64-gnu": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz",
+ "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-linux-x64-musl": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz",
+ "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==",
+ "dev": true,
+ "optional": true
+ },
+ "@nomicfoundation/solidity-analyzer-win32-x64-msvc": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz",
+ "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==",
+ "dev": true,
+ "optional": true
+ },
+ "@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
+ "@puppeteer/browsers": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz",
+ "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.4.3",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.4",
+ "tar-fs": "^3.1.1",
+ "yargs": "^17.7.2"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true,
- "peer": true
- },
- "diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true,
- "peer": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
- "peer": true,
"requires": {
- "to-regex-range": "^5.0.1"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
}
},
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true
+ }
+ }
+ },
+ "@scure/base": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
+ "dev": true
+ },
+ "@scure/bip32": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz",
+ "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/curves": "~1.9.0",
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "dependencies": {
+ "@noble/curves": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
+ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
"dev": true,
"peer": true,
"requires": {
- "locate-path": "^2.0.0"
+ "@noble/hashes": "1.8.0"
}
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
- "optional": true,
"peer": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ }
+ }
+ },
+ "@scure/bip39": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz",
+ "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "dependencies": {
+ "@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
"peer": true
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "peer": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "peer": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ }
+ }
+ },
+ "@sentry/core": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz",
+ "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==",
+ "dev": true,
+ "requires": {
+ "@sentry/hub": "5.30.0",
+ "@sentry/minimal": "5.30.0",
+ "@sentry/types": "5.30.0",
+ "@sentry/utils": "5.30.0",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/hub": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz",
+ "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==",
+ "dev": true,
+ "requires": {
+ "@sentry/types": "5.30.0",
+ "@sentry/utils": "5.30.0",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/minimal": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz",
+ "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==",
+ "dev": true,
+ "requires": {
+ "@sentry/hub": "5.30.0",
+ "@sentry/types": "5.30.0",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/node": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz",
+ "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==",
+ "dev": true,
+ "requires": {
+ "@sentry/core": "5.30.0",
+ "@sentry/hub": "5.30.0",
+ "@sentry/tracing": "5.30.0",
+ "@sentry/types": "5.30.0",
+ "@sentry/utils": "5.30.0",
+ "cookie": "^0.4.1",
+ "https-proxy-agent": "^5.0.0",
+ "lru_map": "^0.3.3",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/tracing": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz",
+ "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==",
+ "dev": true,
+ "requires": {
+ "@sentry/hub": "5.30.0",
+ "@sentry/minimal": "5.30.0",
+ "@sentry/types": "5.30.0",
+ "@sentry/utils": "5.30.0",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@sentry/types": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz",
+ "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==",
+ "dev": true
+ },
+ "@sentry/utils": {
+ "version": "5.30.0",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz",
+ "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==",
+ "dev": true,
+ "requires": {
+ "@sentry/types": "5.30.0",
+ "tslib": "^1.9.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "@solidity-parser/parser": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz",
+ "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==",
+ "dev": true
+ },
+ "@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true
+ },
+ "@tsconfig/node10": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
+ "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",
+ "dev": true,
+ "peer": true
+ },
+ "@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
+ "peer": true
+ },
+ "@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true,
+ "peer": true
+ },
+ "@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
+ "peer": true
+ },
+ "@typechain/ethers-v6": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz",
+ "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "lodash": "^4.17.15",
+ "ts-essentials": "^7.0.1"
+ }
+ },
+ "@typechain/hardhat": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz",
+ "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs-extra": "^9.1.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
- "peer": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "peer": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@types/bn.js": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz",
+ "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/chai": {
+ "version": "4.3.20",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz",
+ "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/chai-as-promised": {
+ "version": "7.1.8",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz",
+ "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/chai": "*"
+ }
+ },
+ "@types/debug": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
+ "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
+ "dev": true,
+ "requires": {
+ "@types/ms": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/mocha": {
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz",
+ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/ms": {
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
+ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "25.6.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
+ "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
+ "dev": true,
+ "requires": {
+ "undici-types": "~7.19.0"
+ }
+ },
+ "@types/pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/secp256k1": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz",
+ "integrity": "sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
+ "dev": true,
+ "peer": true
+ },
+ "abitype": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz",
+ "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "dev": true,
+ "peer": true
+ },
+ "acorn-walk": {
+ "version": "8.3.5",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+ "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "acorn": "^8.11.0"
+ }
+ },
+ "adm-zip": {
+ "version": "0.4.16",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
+ "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
+ "dev": true
+ },
+ "aes-js": {
+ "version": "4.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz",
+ "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
+ "aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
+ "ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
+ "ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "antlr4ts": {
+ "version": "0.5.0-alpha.4",
+ "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
+ "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
+ "peer": true
+ },
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true,
+ "peer": true
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "peer": true
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true,
+ "peer": true
+ },
+ "ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.0.1"
+ }
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "peer": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
+ "dev": true,
+ "peer": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "peer": true
+ },
+ "available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "possible-typed-array-names": "^1.0.0"
+ }
+ },
+ "axios": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz",
+ "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==",
+ "dev": true,
+ "requires": {
+ "follow-redirects": "^1.15.11",
+ "form-data": "^4.0.5",
+ "proxy-from-env": "^2.1.0"
+ }
+ },
+ "axios-debug-log": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/axios-debug-log/-/axios-debug-log-1.0.0.tgz",
+ "integrity": "sha512-ZjMaEBEij9w+Vbk2Uc3XflchTT7j9rZdYD/snN+XQ5FRDq1QjZNhh0Izb3KSyarU5vTkiCvJyg1xDiQBHZZB9w==",
+ "dev": true,
+ "requires": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0"
+ }
+ },
+ "b4a": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz",
+ "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==",
+ "dev": true,
+ "requires": {}
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "bare-events": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "bare-fs": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz",
+ "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==",
+ "dev": true,
+ "requires": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ }
+ },
+ "bare-os": {
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz",
+ "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==",
+ "dev": true
+ },
+ "bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "dev": true,
+ "requires": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "bare-stream": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz",
+ "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==",
+ "dev": true,
+ "requires": {
+ "streamx": "^2.25.0",
+ "teex": "^1.0.1"
+ }
+ },
+ "bare-url": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz",
+ "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==",
+ "dev": true,
+ "requires": {
+ "bare-path": "^3.0.0"
+ }
+ },
+ "base-x": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz",
+ "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "basic-ftp": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.2.tgz",
+ "integrity": "sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true
+ },
+ "blakejs": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz",
+ "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==",
+ "dev": true,
+ "peer": true
+ },
+ "bn.js": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz",
+ "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.1.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "dev": true
+ },
+ "brotli-wasm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brotli-wasm/-/brotli-wasm-2.0.1.tgz",
+ "integrity": "sha512-+3USgYsC7bzb5yU0/p2HnnynZl0ak0E6uoIm4UW4Aby/8s8HFCq6NCfrrf1E9c3O8OCSzq3oYO1tUVqIi61Nww==",
+ "dev": true,
+ "peer": true
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "bs58": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
+ "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "base-x": "^3.0.2"
+ }
+ },
+ "bs58check": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz",
+ "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "bs58": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "dev": true,
+ "peer": true
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true
+ },
+ "c3-linearization": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/c3-linearization/-/c3-linearization-0.3.0.tgz",
+ "integrity": "sha512-eQNsZQhFSJAhrNrITy2FpKh7EHS98q/pniDtQhndWqqsvayiPeqZ9T6I9V9PsHcm0nc+ZYJHKUvI/hh37I33HQ==",
+ "dev": true
+ },
+ "call-bind": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "get-intrinsic": "^1.3.0",
+ "set-function-length": "^1.2.2"
+ }
+ },
+ "call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ }
+ },
+ "call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "cbor": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz",
+ "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "nofilter": "^3.1.0"
+ }
+ },
+ "chai": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
+ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.1.0"
+ }
+ },
+ "chai-as-promised": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz",
+ "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "check-error": "^1.0.2"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true,
+ "peer": true
+ },
+ "check-error": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "get-func-name": "^2.0.2"
+ }
+ },
+ "cheerio": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
+ "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
+ "dev": true,
+ "requires": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "encoding-sniffer": "^0.2.1",
+ "htmlparser2": "^10.1.0",
+ "parse5": "^7.3.0",
+ "parse5-htmlparser2-tree-adapter": "^7.1.0",
+ "parse5-parser-stream": "^7.1.2",
+ "undici": "^7.19.0",
+ "whatwg-mimetype": "^4.0.0"
+ },
+ "dependencies": {
+ "undici": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz",
+ "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==",
+ "dev": true
+ }
+ }
+ },
+ "cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ }
+ },
+ "chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "requires": {
+ "readdirp": "^4.0.1"
+ }
+ },
+ "chromium-bidi": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz",
+ "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==",
+ "dev": true,
+ "requires": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz",
+ "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.2"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "dev": true
+ },
+ "cli-color": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
+ "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.64",
+ "es6-iterator": "^2.0.3",
+ "memoizee": "^0.4.15",
+ "timers-ext": "^0.1.7"
+ }
+ },
+ "cli-table3": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@colors/colors": "1.5.0",
+ "string-width": "^4.2.0"
+ }
+ },
+ "cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "dev": true
+ },
+ "command-line-args": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
+ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "array-back": "^3.1.0",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ }
+ },
+ "command-line-usage": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
+ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "array-back": "^4.0.2",
+ "chalk": "^2.4.2",
+ "table-layout": "^1.0.2",
+ "typical": "^5.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "peer": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "peer": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "peer": true
+ },
+ "convert-svg-core": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.7.1.tgz",
+ "integrity": "sha512-qlQlT2pHMCG0NmZsh2yuYNYO9zKbOmHoWPT+ibuvpVjvA7l9aNhHS4debQeZGuR0mA4x/0a38zOTqBkkdYoTXQ==",
+ "dev": true,
+ "requires": {
+ "cheerio": "^1.1.0",
+ "file-url": "^4.0.0",
+ "puppeteer-core": "^24.10.1",
+ "tmp": "^0.2.3"
+ }
+ },
+ "convert-svg-to-png": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.7.1.tgz",
+ "integrity": "sha512-XgLC/EmK0/GvdaHpCpEHCHL/ty/TDeezk8+AKWmUfEgUrYiwR9Tqrih9zfVWVzQYvn8mtjLvROv9xRQ7FHBo/Q==",
+ "dev": true,
+ "requires": {
+ "convert-svg-core": "^0.7.1"
+ }
+ },
+ "cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true,
+ "peer": true
+ },
+ "cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
+ "dev": true,
+ "requires": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "peer": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "peer": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true,
+ "peer": true
+ },
+ "css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ }
+ },
+ "css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true
+ },
+ "d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "dev": true,
+ "requires": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ }
+ },
+ "data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true
+ },
+ "death": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz",
+ "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==",
+ "dev": true,
+ "peer": true
+ },
+ "debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.3"
+ }
+ },
+ "deep-eql": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "peer": true
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "peer": true
+ },
+ "define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ }
+ },
+ "degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "requires": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "dependencies": {
+ "escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "source-map": "~0.6.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true
+ },
+ "devtools-protocol": {
+ "version": "0.0.1595872",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz",
+ "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==",
+ "dev": true
+ },
+ "diff": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
+ "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
+ "dev": true
+ },
+ "diff-match-patch": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
+ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==",
+ "dev": true
+ },
+ "difflib": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz",
+ "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "heap": ">= 0.2.0"
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.3.0"
+ }
+ },
+ "domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ }
+ },
+ "dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ }
+ },
+ "eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "peer": true
+ },
+ "elliptic": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
+ "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.3",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
+ "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
+ "dev": true
+ }
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "encoding-sniffer": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "^0.6.3",
+ "whatwg-encoding": "^3.1.1"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true
+ },
+ "env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true
+ },
+ "es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true
+ },
+ "es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0"
+ }
+ },
+ "es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.2.0"
+ }
+ },
+ "esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
+ "dev": true,
+ "peer": true
+ },
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==",
+ "dev": true,
+ "peer": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "ethereum-bloom-filters": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz",
+ "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/hashes": "^1.4.0"
+ },
+ "dependencies": {
+ "@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "ethereum-cryptography": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz",
+ "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/pbkdf2": "^3.0.0",
+ "@types/secp256k1": "^4.0.1",
+ "blakejs": "^1.1.0",
+ "browserify-aes": "^1.2.0",
+ "bs58check": "^2.1.2",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "hash.js": "^1.1.7",
+ "keccak": "^3.0.0",
+ "pbkdf2": "^3.0.17",
+ "randombytes": "^2.1.0",
+ "safe-buffer": "^5.1.2",
+ "scrypt-js": "^3.0.0",
+ "secp256k1": "^4.0.1",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "ethereumjs-util": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz",
+ "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/bn.js": "^5.1.0",
+ "bn.js": "^5.1.2",
+ "create-hash": "^1.1.2",
+ "ethereum-cryptography": "^0.1.3",
+ "rlp": "^2.2.4"
+ }
+ },
+ "ethers": {
+ "version": "6.16.0",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz",
+ "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==",
+ "dev": true,
+ "requires": {
+ "@adraffy/ens-normalize": "1.10.1",
+ "@noble/curves": "1.2.0",
+ "@noble/hashes": "1.3.2",
+ "@types/node": "22.7.5",
+ "aes-js": "4.0.0-beta.5",
+ "tslib": "2.7.0",
+ "ws": "8.17.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "22.7.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz",
+ "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==",
+ "dev": true,
+ "requires": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true
+ },
+ "ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "requires": {}
+ }
+ }
+ },
+ "ethjs-unit": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz",
+ "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "bn.js": "4.11.6",
+ "number-to-bn": "1.7.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.6",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
+ "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "requires": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "dev": true,
+ "peer": true
+ },
+ "events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "dev": true,
+ "requires": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "dev": true,
+ "requires": {
+ "type": "^2.7.2"
+ }
+ },
+ "extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "requires": {
+ "@types/yauzl": "^2.9.1",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "peer": true
+ },
+ "fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ }
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "peer": true
+ },
+ "fast-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "dev": true,
+ "peer": true
+ },
+ "fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "file-url": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/file-url/-/file-url-4.0.0.tgz",
+ "integrity": "sha512-vRCdScQ6j3Ku6Kd7W1kZk9c++5SqD6Xz5Jotrjr/nkY714M14RFHy/AAVA2WQvpsqVAVgTbDrYyBpU205F0cLw==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-replace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
+ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "array-back": "^3.0.1"
+ }
+ },
+ "flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true
+ },
+ "follow-redirects": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
+ "dev": true
+ },
+ "for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "is-callable": "^1.2.7"
+ }
+ },
+ "foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "dependencies": {
+ "signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fp-ts": {
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz",
+ "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+ "dev": true,
+ "peer": true
+ },
+ "get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ }
+ },
+ "get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "requires": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+ "dev": true,
+ "requires": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ }
+ },
+ "ghost-testrpc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz",
+ "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "node-emoji": "^1.10.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "peer": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "global-prefix": "^3.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ }
+ },
+ "globby": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
+ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "graphviz": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.9.tgz",
+ "integrity": "sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg==",
+ "dev": true,
+ "requires": {
+ "temp": "~0.4.0"
+ }
+ },
+ "handlebars": {
+ "version": "4.7.9",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
+ "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4",
+ "wordwrap": "^1.0.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "hardhat": {
+ "version": "2.28.6",
+ "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.6.tgz",
+ "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==",
+ "dev": true,
+ "requires": {
+ "@ethereumjs/util": "^9.1.0",
+ "@ethersproject/abi": "^5.1.2",
+ "@nomicfoundation/edr": "0.12.0-next.23",
+ "@nomicfoundation/solidity-analyzer": "^0.1.0",
+ "@sentry/node": "^5.18.1",
+ "adm-zip": "^0.4.16",
+ "aggregate-error": "^3.0.0",
+ "ansi-escapes": "^4.3.0",
+ "boxen": "^5.1.2",
+ "chokidar": "^4.0.0",
+ "ci-info": "^2.0.0",
+ "debug": "^4.1.1",
+ "enquirer": "^2.3.0",
+ "env-paths": "^2.2.0",
+ "ethereum-cryptography": "^1.0.3",
+ "find-up": "^5.0.0",
+ "fp-ts": "1.19.3",
+ "fs-extra": "^7.0.1",
+ "immutable": "^4.0.0-rc.12",
+ "io-ts": "1.10.4",
+ "json-stream-stringify": "^3.1.4",
+ "keccak": "^3.0.2",
+ "lodash": "^4.17.11",
+ "micro-eth-signer": "^0.14.0",
+ "mnemonist": "^0.38.0",
+ "mocha": "^10.0.0",
+ "p-map": "^4.0.0",
+ "picocolors": "^1.1.0",
+ "raw-body": "^2.4.1",
+ "resolve": "1.17.0",
+ "semver": "^6.3.0",
+ "solc": "0.8.26",
+ "source-map-support": "^0.5.13",
+ "stacktrace-parser": "^0.1.10",
+ "tinyglobby": "^0.2.6",
+ "tsort": "0.0.1",
+ "undici": "^5.14.0",
+ "uuid": "^8.3.2",
+ "ws": "^7.4.6"
+ },
+ "dependencies": {
+ "@noble/hashes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz",
+ "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==",
+ "dev": true
+ },
+ "@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
+ "dev": true
+ },
+ "@scure/bip32": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz",
+ "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==",
+ "dev": true,
+ "requires": {
+ "@noble/hashes": "~1.2.0",
+ "@noble/secp256k1": "~1.7.0",
+ "@scure/base": "~1.1.0"
+ }
+ },
+ "@scure/bip39": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz",
+ "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==",
+ "dev": true,
+ "requires": {
+ "@noble/hashes": "~1.2.0",
+ "@scure/base": "~1.1.0"
+ }
+ },
+ "ethereum-cryptography": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz",
+ "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==",
+ "dev": true,
+ "requires": {
+ "@noble/hashes": "1.2.0",
+ "@noble/secp256k1": "1.7.1",
+ "@scure/bip32": "1.1.5",
+ "@scure/bip39": "1.1.1"
+ }
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ }
+ }
+ },
+ "hardhat-gas-reporter": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-2.3.0.tgz",
+ "integrity": "sha512-ySdA+044xMQv1BlJu5CYXToHzMexKFfIWxlQTBNNoerx1x96+d15IMdN01iQZ/TJ7NH2V5sU73bz77LoS/PEVw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@ethersproject/abi": "^5.7.0",
+ "@ethersproject/bytes": "^5.7.0",
+ "@ethersproject/units": "^5.7.0",
+ "@solidity-parser/parser": "^0.20.1",
+ "axios": "^1.6.7",
+ "brotli-wasm": "^2.0.1",
+ "chalk": "4.1.2",
+ "cli-table3": "^0.6.3",
+ "ethereum-cryptography": "^2.1.3",
+ "glob": "^10.3.10",
+ "jsonschema": "^1.4.1",
+ "lodash": "^4.17.21",
+ "markdown-table": "2.0.0",
+ "sha1": "^1.1.1",
+ "viem": "^2.27.0"
+ },
+ "dependencies": {
+ "@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/hashes": "1.4.0"
+ }
+ },
+ "@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
+ "dev": true,
+ "peer": true
+ },
+ "@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
+ "dev": true,
+ "peer": true
+ },
+ "@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ }
+ },
+ "@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
+ }
+ },
+ "ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
+ }
+ },
+ "glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^2.0.2"
+ }
+ }
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "es-define-property": "^1.0.0"
+ }
+ },
+ "has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "hash-base": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz",
+ "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^2.3.8",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "peer": true
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hasha": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
+ "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
+ "dev": true,
+ "requires": {
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
+ }
+ },
+ "hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "heap": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
+ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==",
+ "dev": true,
+ "peer": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "htmlparser2": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "dev": true
+ }
+ }
+ },
+ "http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "dev": true,
+ "requires": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ }
+ },
+ "http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "peer": true
+ },
+ "immer": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz",
+ "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==",
+ "dev": true,
+ "peer": true
+ },
+ "immutable": {
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz",
+ "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "peer": true
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "peer": true
+ },
+ "io-ts": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz",
+ "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==",
+ "dev": true,
+ "requires": {
+ "fp-ts": "^1.0.0"
+ }
+ },
+ "ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "peer": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-hex-prefixed": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
+ "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
+ "dev": true,
+ "peer": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true
+ },
+ "is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "which-typed-array": "^1.1.16"
+ }
+ },
+ "is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "peer": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "peer": true
+ },
+ "isows": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz",
+ "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@isaacs/cliui": "^8.0.2",
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "js-graph-algorithms": {
+ "version": "1.0.18",
+ "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz",
+ "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==",
+ "dev": true
+ },
+ "js-sha3": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "peer": true
+ },
+ "json-stream-stringify": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz",
+ "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true,
+ "peer": true
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "peer": true
+ },
+ "jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "jsonschema": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz",
+ "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==",
+ "dev": true,
+ "peer": true
+ },
+ "keccak": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz",
+ "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==",
+ "dev": true,
+ "requires": {
+ "node-addon-api": "^2.0.0",
+ "node-gyp-build": "^4.2.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "peer": true
+ },
+ "klaw": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz",
+ "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==",
+ "dev": true
+ },
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "peer": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "dev": true,
+ "peer": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "dev": true,
+ "peer": true
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "dev": true,
+ "peer": true
+ },
+ "lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true,
+ "peer": true
+ },
+ "log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ }
+ },
+ "loupe": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "get-func-name": "^2.0.1"
+ }
+ },
+ "lru_map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
+ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "peer": true
+ },
+ "lru-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
+ "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
+ "dev": true,
+ "requires": {
+ "es5-ext": "~0.10.2"
+ }
+ },
+ "make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true,
+ "peer": true
+ },
+ "markdown-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+ "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "repeat-string": "^1.0.0"
+ }
+ },
+ "math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "memoizee": {
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
+ "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
+ "dev": true,
+ "requires": {
+ "d": "^1.0.2",
+ "es5-ext": "^0.10.64",
+ "es6-weak-map": "^2.0.3",
+ "event-emitter": "^0.3.5",
+ "is-promise": "^2.2.2",
+ "lru-queue": "^0.1.0",
+ "next-tick": "^1.1.0",
+ "timers-ext": "^0.1.7"
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "peer": true
+ },
+ "micro-eth-signer": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz",
+ "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==",
+ "dev": true,
+ "requires": {
+ "@noble/curves": "~1.8.1",
+ "@noble/hashes": "~1.7.1",
+ "micro-packed": "~0.7.2"
+ },
+ "dependencies": {
+ "@noble/curves": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz",
+ "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==",
"dev": true,
- "peer": true,
"requires": {
- "binary-extensions": "^2.0.0"
+ "@noble/hashes": "1.7.2"
}
},
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "peer": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "peer": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "@noble/hashes": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz",
+ "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==",
+ "dev": true
+ }
+ }
+ },
+ "micro-ftch": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz",
+ "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==",
+ "dev": true,
+ "peer": true
+ },
+ "micro-packed": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz",
+ "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==",
+ "dev": true,
+ "requires": {
+ "@scure/base": "~1.2.5"
+ }
+ },
+ "micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "peer": true
+ },
+ "minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "peer": true
+ },
+ "mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "mnemonist": {
+ "version": "0.38.5",
+ "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz",
+ "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==",
+ "dev": true,
+ "requires": {
+ "obliterator": "^2.0.0"
+ }
+ },
+ "mocha": {
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
+ "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.3",
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.5",
+ "diff": "^5.2.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^8.1.0",
+ "he": "^1.2.0",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^5.1.6",
+ "ms": "^2.1.3",
+ "serialize-javascript": "^6.0.2",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^6.5.1",
+ "yargs": "^16.2.0",
+ "yargs-parser": "^20.2.9",
+ "yargs-unparser": "^2.0.0"
+ },
+ "dependencies": {
+ "chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
- "peer": true,
"requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "peer": true
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ }
},
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
- "peer": true,
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
}
},
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
- "peer": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
}
},
- "mocha": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
- "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
- "peer": true,
"requires": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.4",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "5.0.1",
- "ms": "2.1.3",
- "nanoid": "3.3.3",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "workerpool": "6.2.1",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "peer": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "peer": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "peer": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "peer": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
- "dev": true,
- "peer": true,
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "peer": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "peer": true
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "peer": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
+ "p-locate": "^5.0.0"
}
},
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "peer": true
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "minimatch": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"dev": true,
- "peer": true
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
},
"p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
- "peer": true,
"requires": {
- "p-try": "^1.0.0"
+ "yocto-queue": "^0.1.0"
}
},
"p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
- "peer": true,
"requires": {
- "p-limit": "^1.1.0"
+ "p-limit": "^3.0.2"
}
},
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true,
- "peer": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "peer": true
- },
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
- "peer": true,
"requires": {
"picomatch": "^2.2.1"
}
},
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "peer": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "peer": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "peer": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "peer": true,
- "requires": {
- "has-flag": "^3.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "peer": true
- }
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "peer": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "peer": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "peer": true
- }
- }
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "peer": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
- "peer": true,
"requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "has-flag": "^4.0.0"
}
- },
- "yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
- "dev": true,
- "peer": true
}
}
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "ndjson": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz",
+ "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==",
"dev": true,
"peer": true,
"requires": {
- "function-bind": "^1.1.1"
+ "json-stringify-safe": "^5.0.1",
+ "minimist": "^1.2.5",
+ "readable-stream": "^3.6.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
}
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "peer": true
+ },
+ "netmask": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
+ "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
"dev": true
},
- "has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
+ "node-addon-api": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz",
+ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
+ "dev": true
+ },
+ "node-emoji": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+ "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "lodash": "^4.17.21"
+ }
+ },
+ "node-gyp-build": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
+ "dev": true
+ },
+ "nofilter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz",
+ "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==",
"dev": true,
"peer": true
},
- "has-symbols": {
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "number-to-bn": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz",
+ "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "bn.js": "4.11.6",
+ "strip-hex-prefix": "1.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.6",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
+ "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "obliterator": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz",
+ "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ordinal": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz",
+ "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==",
"dev": true,
"peer": true
},
- "hash-base": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true
+ },
+ "ox": {
+ "version": "0.14.15",
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.15.tgz",
+ "integrity": "sha512-3TubCmbKen/cuZQzX0qDbOS5lojjdSZ90lqKxWIDWd5siuJ0IJBaTXMYs8eMPLcraqnOwGZazz3apHPGiRCkGQ==",
"dev": true,
"peer": true,
"requires": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
+ "@adraffy/ens-normalize": "^1.11.0",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "^1.8.0",
+ "@scure/bip32": "^1.7.0",
+ "@scure/bip39": "^1.6.0",
+ "abitype": "^1.2.3",
+ "eventemitter3": "5.0.1"
},
"dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "@adraffy/ens-normalize": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
+ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
"dev": true,
"peer": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "@noble/hashes": "1.8.0"
}
},
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
"peer": true
}
}
},
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
+ "aggregate-error": "^3.0.0"
+ }
+ },
+ "pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "dev": true,
+ "requires": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ }
+ }
+ }
+ },
+ "pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "dev": true,
+ "requires": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
}
},
- "hmac-drbg": {
+ "package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "peer": true
+ },
+ "parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
+ "callsites": "^3.0.0"
}
},
- "htmlparser2": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
- "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
"requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "entities": "^4.3.0"
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
}
},
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"dev": true,
- "peer": true,
"requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
+ "entities": "^6.0.0"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true
+ }
}
},
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
"dev": true,
"requires": {
- "agent-base": "6",
- "debug": "4"
+ "domhandler": "^5.0.3",
+ "parse5": "^7.0.0"
}
},
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "parse5-parser-stream": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
"dev": true,
- "peer": true,
"requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "parse5": "^7.0.0"
}
},
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
},
- "immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==",
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"peer": true
},
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "peer": true
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
},
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
+ "peer": true,
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
}
},
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "peer": true
},
- "io-ts": {
- "version": "1.10.4",
- "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz",
- "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==",
+ "pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "pbkdf2": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz",
+ "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==",
"dev": true,
"peer": true,
"requires": {
- "fp-ts": "^1.0.0"
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "ripemd160": "^2.0.3",
+ "safe-buffer": "^5.2.1",
+ "sha.js": "^2.4.12",
+ "to-buffer": "^1.2.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true
},
- "is-hex-prefixed": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz",
- "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==",
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
"peer": true
},
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
"dev": true,
"peer": true
},
- "is-promise": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
- "dev": true
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true,
+ "peer": true
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true
+ "prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "peer": true
},
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true,
"peer": true
},
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "js-graph-algorithms": {
- "version": "1.0.18",
- "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz",
- "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==",
- "dev": true
+ "prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ }
},
- "js-sdsl": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
- "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
+ "proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
"dev": true,
- "peer": true
+ "requires": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "requires": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ }
+ },
+ "lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true
+ },
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ }
+ }
},
- "js-sha3": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
- "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==",
+ "proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
"dev": true
},
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
"dev": true,
- "peer": true,
"requires": {
- "argparse": "^2.0.1"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "puppeteer": {
+ "version": "24.41.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.41.0.tgz",
+ "integrity": "sha512-W6Fk0J3TPjjtwjXOyR/qf+YaL0H/Uq8HIgHcXG4mNM/IgbKMCH/HPyK0Fi2qbTU/QpSl9bCte2yBpGHKejTpIw==",
"dev": true,
- "peer": true,
"requires": {
- "graceful-fs": "^4.1.6"
+ "@puppeteer/browsers": "2.13.0",
+ "chromium-bidi": "14.0.0",
+ "cosmiconfig": "^9.0.0",
+ "devtools-protocol": "0.0.1595872",
+ "puppeteer-core": "24.41.0",
+ "typed-query-selector": "^2.12.1"
}
},
- "keccak": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz",
- "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==",
+ "puppeteer-core": {
+ "version": "24.41.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.41.0.tgz",
+ "integrity": "sha512-rLIUri7E/NQ3APSEYCCozaSJx0u8Tu9wxO6BJwnvXmIgILSK3L0TombaVh3izp1njAGrO6H2ru0hcIrLF+gWLw==",
"dev": true,
- "peer": true,
"requires": {
- "node-addon-api": "^2.0.0",
- "node-gyp-build": "^4.2.0",
- "readable-stream": "^3.6.0"
+ "@puppeteer/browsers": "2.13.0",
+ "chromium-bidi": "14.0.0",
+ "debug": "^4.4.3",
+ "devtools-protocol": "0.0.1595872",
+ "typed-query-selector": "^2.12.1",
+ "webdriver-bidi-protocol": "0.4.1",
+ "ws": "^8.19.0"
},
"dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "ws": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
+ "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"dev": true,
- "peer": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
+ "requires": {}
}
}
},
- "klaw": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz",
- "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==",
- "dev": true
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "peer": true
},
- "level": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz",
- "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==",
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
- "peer": true,
"requires": {
- "browser-level": "^1.0.1",
- "classic-level": "^1.2.0"
+ "safe-buffer": "^5.1.0"
}
},
- "level-supports": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz",
- "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==",
+ "raw-body": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"dev": true,
- "peer": true
+ "requires": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
+ }
},
- "level-transcoder": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz",
- "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==",
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "recursive-readdir": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
+ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
"dev": true,
"peer": true,
"requires": {
- "buffer": "^6.0.3",
- "module-error": "^1.0.1"
+ "minimatch": "^3.0.5"
},
"dependencies": {
- "buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"peer": true,
"requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "brace-expansion": "^1.1.7"
}
}
}
},
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "reduce-flatten": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
+ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
"dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
+ "peer": true
},
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
"dev": true,
"peer": true
},
- "lodash.omit": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
- "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==",
- "dev": true
- },
- "lodash.pick": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
- "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==",
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true
},
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "peer": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
- "lru_map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
- "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
"peer": true
},
- "lru-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
- "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
"dev": true,
"requires": {
- "es5-ext": "~0.10.2"
+ "path-parse": "^1.0.6"
}
},
- "map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
- "dev": true,
- "requires": {
- "p-defer": "^1.0.0"
- }
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
},
- "mcl-wasm": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz",
- "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==",
+ "reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
"dev": true,
"peer": true
},
- "md5.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "ripemd160": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz",
+ "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==",
"dev": true,
"peer": true,
"requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "hash-base": "^3.1.2",
+ "inherits": "^2.0.4"
}
},
- "memoizee": {
- "version": "0.4.15",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
- "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
+ "rlp": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz",
+ "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==",
"dev": true,
+ "peer": true,
"requires": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
- "es6-weak-map": "^2.0.3",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.2.2",
- "lru-queue": "^0.1.0",
- "next-tick": "^1.1.0",
- "timers-ext": "^0.1.7"
+ "bn.js": "^5.2.0"
}
},
- "memory-level": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz",
- "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==",
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"peer": true,
"requires": {
- "abstract-level": "^1.0.0",
- "functional-red-black-tree": "^1.0.1",
- "module-error": "^1.0.1"
+ "queue-microtask": "^1.2.2"
}
},
- "memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
- "dev": true,
- "peer": true
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "sc-istanbul": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz",
+ "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==",
"dev": true,
+ "peer": true,
"requires": {
- "mime-db": "1.52.0"
+ "abbrev": "1.0.x",
+ "async": "1.x",
+ "escodegen": "1.8.x",
+ "esprima": "2.7.x",
+ "glob": "^5.0.15",
+ "handlebars": "^4.0.1",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "once": "1.x",
+ "resolve": "1.1.x",
+ "supports-color": "^3.1.0",
+ "which": "^1.1.1",
+ "wordwrap": "^1.0.0"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "peer": true
+ },
+ "js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ }
}
},
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
- "dev": true
+ "scrypt-js": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
+ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==",
+ "dev": true,
+ "peer": true
},
- "minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+ "secp256k1": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz",
+ "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==",
"dev": true,
+ "peer": true,
"requires": {
- "brace-expansion": "^2.0.1"
+ "elliptic": "^6.5.7",
+ "node-addon-api": "^5.0.0",
+ "node-gyp-build": "^4.2.0"
+ },
+ "dependencies": {
+ "node-addon-api": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
},
- "mnemonist": {
- "version": "0.38.5",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz",
- "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==",
+ "serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"dev": true,
- "peer": true,
"requires": {
- "obliterator": "^2.0.0"
+ "randombytes": "^2.1.0"
}
},
- "module-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz",
- "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==",
- "dev": true,
- "peer": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
- "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+ "set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ }
},
- "napi-macros": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz",
- "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==",
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"dev": true,
"peer": true
},
- "next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true
},
- "node-addon-api": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz",
- "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
- "dev": true,
- "peer": true
- },
- "node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "sha.js": {
+ "version": "2.4.12",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz",
+ "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==",
"dev": true,
+ "peer": true,
"requires": {
- "whatwg-url": "^5.0.0"
+ "inherits": "^2.0.4",
+ "safe-buffer": "^5.2.1",
+ "to-buffer": "^1.2.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
+ "sha1": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
+ "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "charenc": ">= 0.0.1",
+ "crypt": ">= 0.0.1"
+ }
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "sha1-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-2.0.1.tgz",
+ "integrity": "sha512-L4Kum9Lp8cWqcGKycZcXxR6spUoG4idDIUzAKjPiELnIZWxiFlZ5HFVzFxVxuWuGPsrraeL0JoGk0nFZ7AGFEQ==",
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "hasha": "^5.2.0"
}
},
- "nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dev": true,
+ "peer": true,
"requires": {
- "boolbase": "^1.0.0"
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
}
},
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
"dev": true,
"peer": true
},
- "obliterator": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
- "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==",
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
"peer": true
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
+ "peer": true,
"requires": {
- "wrappy": "1"
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
}
},
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true,
- "peer": true
- },
- "p-defer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true
- },
- "p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true
},
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
}
},
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
"requires": {
- "p-limit": "^2.2.0"
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true
+ }
}
},
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "sol2uml": {
+ "version": "2.5.26",
+ "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.26.tgz",
+ "integrity": "sha512-lq7ktw4yLDcgF8em5NXaCyKJmd6qgDIxSG/onWT4CGLQeWufauBnGHuTRf/yYY1DCPmpF9PENQ5hcRPSAIqRcg==",
"dev": true,
- "peer": true,
"requires": {
- "aggregate-error": "^3.0.0"
+ "@aduh95/viz.js": "^3.7.0",
+ "@solidity-parser/parser": "^0.20.1",
+ "axios": "^1.13.6",
+ "axios-debug-log": "^1.0.0",
+ "cli-color": "^2.0.4",
+ "commander": "^12.1.0",
+ "convert-svg-to-png": "^0.7.1",
+ "debug": "^4.4.1",
+ "diff-match-patch": "^1.0.5",
+ "ethers": "^6.16.0",
+ "js-graph-algorithms": "^1.0.18",
+ "klaw": "^4.1.0",
+ "puppeteer": "^24.37.5"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
+ "dev": true
+ }
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "solc": {
+ "version": "0.8.26",
+ "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz",
+ "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==",
"dev": true,
"requires": {
- "entities": "^4.4.0"
+ "command-exists": "^1.2.8",
+ "commander": "^8.1.0",
+ "follow-redirects": "^1.12.1",
+ "js-sha3": "0.8.0",
+ "memorystream": "^0.3.1",
+ "semver": "^5.5.0",
+ "tmp": "0.0.33"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
}
},
- "parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "solidity-coverage": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.17.tgz",
+ "integrity": "sha512-5P8vnB6qVX9tt1MfuONtCTEaEGO/O4WuEidPHIAJjx4sktHHKhO3rFvnE0q8L30nWJPTrcqGQMT7jpE29B2qow==",
"dev": true,
+ "peer": true,
"requires": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
+ "@ethersproject/abi": "^5.0.9",
+ "@solidity-parser/parser": "^0.20.1",
+ "chalk": "^2.4.2",
+ "death": "^1.1.0",
+ "difflib": "^0.2.4",
+ "fs-extra": "^8.1.0",
+ "ghost-testrpc": "^0.0.2",
+ "global-modules": "^2.0.0",
+ "globby": "^10.0.1",
+ "jsonschema": "^1.2.4",
+ "lodash": "^4.17.21",
+ "mocha": "^10.2.0",
+ "node-emoji": "^1.10.0",
+ "pify": "^4.0.1",
+ "recursive-readdir": "^2.2.2",
+ "sc-istanbul": "^0.4.5",
+ "semver": "^7.3.4",
+ "shelljs": "^0.8.3",
+ "web3-utils": "^1.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "peer": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "peer": true
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "peer": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==",
"dev": true,
- "peer": true
+ "optional": true,
+ "peer": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
},
- "pbkdf2": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"dev": true,
- "peer": true,
"requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "readable-stream": "^3.0.0"
}
},
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true,
"peer": true
},
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "stacktrace-parser": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
+ "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
"dev": true,
"requires": {
- "find-up": "^4.0.0"
+ "type-fest": "^0.7.1"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+ "dev": true
+ }
}
},
- "pollock": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/pollock/-/pollock-0.2.1.tgz",
- "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==",
- "dev": true
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
"dev": true
},
- "proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
+ "streamx": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz",
+ "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==",
+ "dev": true,
+ "requires": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
},
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "safe-buffer": "~5.1.0"
}
},
- "puppeteer": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz",
- "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==",
+ "string-format": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz",
+ "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==",
+ "dev": true,
+ "peer": true
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "cross-fetch": "3.1.5",
- "debug": "4.3.4",
- "devtools-protocol": "0.0.981744",
- "extract-zip": "2.0.1",
- "https-proxy-agent": "5.0.1",
- "pkg-dir": "4.2.0",
- "progress": "2.0.3",
- "proxy-from-env": "1.1.0",
- "rimraf": "3.0.2",
- "tar-fs": "2.1.1",
- "unbzip2-stream": "1.4.3",
- "ws": "8.5.0"
- },
- "dependencies": {
- "ws": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
- "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
- "dev": true,
- "requires": {}
- }
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
- "qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "string-width-cjs": {
+ "version": "npm:string-width@4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"peer": true,
"requires": {
- "side-channel": "^1.0.4"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "peer": true
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
},
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "strip-ansi-cjs": {
+ "version": "npm:strip-ansi@6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"peer": true,
"requires": {
- "safe-buffer": "^5.1.0"
+ "ansi-regex": "^5.0.1"
}
},
- "raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "strip-hex-prefix": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
+ "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
"dev": true,
"peer": true,
"requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "is-hex-prefixed": "1.0.0"
}
},
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "peer": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "peer": true,
"requires": {
- "path-parse": "^1.0.6"
+ "has-flag": "^4.0.0"
}
},
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "surya": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.13.tgz",
+ "integrity": "sha512-ff2YmkYu9+u9A1tUv6cEuQDhLw1N+++iI+ZenXyhYR7YmaiQ19h32p2VchBn6zy3JPcfpvBZjf/aEmLbSMW1WA==",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "@solidity-parser/parser": "^0.16.1",
+ "c3-linearization": "^0.3.0",
+ "colors": "^1.4.0",
+ "graphviz": "0.0.9",
+ "sha1-file": "^2.0.0",
+ "treeify": "^1.1.0",
+ "yargs": "^17.0.0"
},
"dependencies": {
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "@solidity-parser/parser": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz",
+ "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==",
"dev": true,
"requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "antlr4ts": "^0.5.0-alpha.4"
}
},
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
}
},
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true
}
}
},
- "ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "table": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
"dev": true,
"peer": true,
"requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
}
},
- "rlp": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz",
- "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==",
+ "table-layout": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
+ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
"dev": true,
"peer": true,
"requires": {
- "bn.js": "^5.2.0"
+ "array-back": "^4.0.1",
+ "deep-extend": "~0.6.0",
+ "typical": "^5.2.0",
+ "wordwrapjs": "^4.0.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "peer": true
+ },
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "run-parallel-limit": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz",
- "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==",
+ "tar-fs": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz",
+ "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==",
"dev": true,
- "peer": true,
"requires": {
- "queue-microtask": "^1.2.2"
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
}
},
- "rustbn.js": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz",
- "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==",
+ "tar-stream": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz",
+ "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==",
"dev": true,
- "peer": true
+ "requires": {
+ "b4a": "^1.6.4",
+ "bare-fs": "^4.5.5",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
},
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "teex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
+ "dev": true,
+ "requires": {
+ "streamx": "^2.12.5"
+ }
+ },
+ "temp": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz",
+ "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==",
"dev": true
},
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "text-decoder": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz",
+ "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
"dev": true,
- "peer": true
+ "requires": {
+ "b4a": "^1.6.4"
+ }
},
- "scrypt-js": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
- "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==",
+ "through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "readable-stream": "3"
+ }
+ },
+ "timers-ext": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz",
+ "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==",
+ "dev": true,
+ "requires": {
+ "es5-ext": "^0.10.64",
+ "next-tick": "^1.1.0"
+ }
+ },
+ "tinyglobby": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+ "dev": true,
+ "requires": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "dependencies": {
+ "fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "requires": {}
+ },
+ "picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true
+ }
+ }
+ },
+ "tmp": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
+ "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
"dev": true
},
- "secp256k1": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz",
- "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==",
+ "to-buffer": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz",
+ "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==",
"dev": true,
"peer": true,
"requires": {
- "elliptic": "^6.5.4",
- "node-addon-api": "^2.0.0",
- "node-gyp-build": "^4.2.0"
+ "isarray": "^2.0.5",
+ "safe-buffer": "^5.2.1",
+ "typed-array-buffer": "^1.0.3"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
- "peer": true,
"requires": {
- "randombytes": "^2.1.0"
+ "is-number": "^7.0.0"
}
},
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true
},
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "treeify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
+ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
+ "dev": true
+ },
+ "ts-command-line-args": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz",
+ "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "command-line-args": "^5.1.1",
+ "command-line-usage": "^6.1.0",
+ "string-format": "^2.0.0"
+ }
},
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "ts-essentials": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz",
+ "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {}
},
- "sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
"peer": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "dependencies": {
+ "diff": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
+ "dev": true,
+ "peer": true
+ }
}
},
- "sha1-file": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz",
- "integrity": "sha512-IgcUYjTck/UAx0wdtBoTwiy4/yiIZX6do4uaqUtryJY/pBOQC1w3Cb/bZMyC2H3QYnodL5vbX0lY69xlWqeBnA==",
+ "tslib": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
"dev": true
},
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
+ "tsort": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz",
+ "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==",
+ "dev": true
},
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
"dev": true
},
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dev": true,
"peer": true,
"requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "prelude-ls": "~1.1.2"
}
},
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "sol2uml": {
- "version": "2.5.20",
- "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.20.tgz",
- "integrity": "sha512-La+UQ4Y6n8yG3Vfy5FudhZGJvymJ13PxuC00W4pKF3iIZFcRGPVH7RLBQ8lc+JqOt+YW92oSaSGSwHnlTmd7tg==",
+ "type-detect": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
+ "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
"dev": true,
- "requires": {
- "@aduh95/viz.js": "^3.7.0",
- "@solidity-parser/parser": "^0.16.1",
- "axios": "^1.6.0",
- "axios-debug-log": "^1.0.0",
- "cli-color": "^2.0.3",
- "commander": "^11.1.0",
- "convert-svg-to-png": "^0.6.4",
- "debug": "^4.3.4",
- "diff-match-patch": "^1.0.5",
- "ethers": "^5.7.2",
- "js-graph-algorithms": "^1.0.18",
- "klaw": "^4.1.0"
- },
- "dependencies": {
- "@solidity-parser/parser": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz",
- "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==",
- "dev": true,
- "requires": {
- "antlr4ts": "^0.5.0-alpha.4"
- }
- },
- "commander": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
- "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
- "dev": true
- }
- }
+ "peer": true
},
- "solc": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz",
- "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==",
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true
+ },
+ "typechain": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz",
+ "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==",
"dev": true,
"peer": true,
"requires": {
- "command-exists": "^1.2.8",
- "commander": "3.0.2",
- "follow-redirects": "^1.12.1",
- "fs-extra": "^0.30.0",
- "js-sha3": "0.8.0",
- "memorystream": "^0.3.1",
- "require-from-string": "^2.0.0",
- "semver": "^5.5.0",
- "tmp": "0.0.33"
+ "@types/prettier": "^2.1.1",
+ "debug": "^4.3.1",
+ "fs-extra": "^7.0.0",
+ "glob": "7.1.7",
+ "js-sha3": "^0.8.0",
+ "lodash": "^4.17.15",
+ "mkdirp": "^1.0.4",
+ "prettier": "^2.3.1",
+ "ts-command-line-args": "^2.2.0",
+ "ts-essentials": "^7.0.1"
},
"dependencies": {
"brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
"peer": true,
"requires": {
@@ -10779,673 +16093,486 @@
"concat-map": "0.0.1"
}
},
- "commander": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz",
- "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==",
- "dev": true,
- "peer": true
- },
"fs-extra": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
- "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"peer": true,
"requires": {
"graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "rimraf": "^2.2.8"
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
}
},
"glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"dev": true,
"peer": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^3.1.1",
+ "minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"peer": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
- "klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==",
- "dev": true,
- "peer": true,
- "requires": {
- "graceful-fs": "^4.1.9"
- }
- },
"minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"peer": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "peer": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
"peer": true
},
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "peer": true,
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- }
- }
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
"peer": true
}
}
},
- "stacktrace-parser": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
- "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
"dev": true,
"peer": true,
"requires": {
- "type-fest": "^0.7.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
- "dev": true,
- "peer": true
- }
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
}
},
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "typed-query-selector": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz",
+ "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==",
+ "dev": true
+ },
+ "typescript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
+ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
"dev": true,
"peer": true
},
- "streamsearch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
- "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
"dev": true,
"peer": true
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
+ "optional": true,
+ "peer": true
},
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "undici": {
+ "version": "5.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "@fastify/busboy": "^2.0.0"
}
},
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "undici-types": {
+ "version": "7.19.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
+ "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
+ "dev": true
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
+ "peer": true
},
- "strip-eof": {
+ "unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true
},
- "strip-hex-prefix": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz",
- "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==",
- "dev": true,
- "peer": true,
- "requires": {
- "is-hex-prefixed": "1.0.0"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "utf8": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
+ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==",
"dev": true,
"peer": true
},
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true
+ },
+ "v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
"dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
+ "peer": true
},
- "surya": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/surya/-/surya-0.4.6.tgz",
- "integrity": "sha512-zaTYkRbms26cuOWu5jon5l4OsToHX7ZEflqTozXgq/XxUL3VY+tEnxT9Te2WVsA/sYgZPwcH92yQZJgljsss4g==",
+ "viem": {
+ "version": "2.47.18",
+ "resolved": "https://registry.npmjs.org/viem/-/viem-2.47.18.tgz",
+ "integrity": "sha512-m3kr+/i8MddeY5fmB2y2v5B0vDL0x8R4v/8gai4Lh4jh8KOWlQqml7PFLtilNomoDm3mINxdA0JnYBJfknNoEg==",
"dev": true,
+ "peer": true,
"requires": {
- "@solidity-parser/parser": "^0.14.1",
- "c3-linearization": "^0.3.0",
- "colors": "^1.4.0",
- "graphviz": "0.0.9",
- "sha1-file": "^1.0.4",
- "treeify": "^1.1.0",
- "yargs": "^11.1.1"
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "1.8.0",
+ "@scure/bip32": "1.7.0",
+ "@scure/bip39": "1.6.0",
+ "abitype": "1.2.3",
+ "isows": "1.0.7",
+ "ox": "0.14.15",
+ "ws": "8.18.3"
},
"dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
"dev": true,
+ "peer": true,
"requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "@noble/hashes": "1.8.0"
}
},
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
+ "peer": true
},
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
- "dev": true
- },
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "peer": true,
+ "requires": {}
+ }
+ }
+ },
+ "web3-utils": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz",
+ "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@ethereumjs/util": "^8.1.0",
+ "bn.js": "^5.2.1",
+ "ethereum-bloom-filters": "^1.0.6",
+ "ethereum-cryptography": "^2.1.2",
+ "ethjs-unit": "0.1.6",
+ "number-to-bn": "1.7.0",
+ "randombytes": "^2.1.0",
+ "utf8": "3.0.0"
+ },
+ "dependencies": {
+ "@ethereumjs/rlp": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz",
+ "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==",
"dev": true,
- "requires": {
- "invert-kv": "^2.0.0"
- }
+ "peer": true
},
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "@ethereumjs/util": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz",
+ "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==",
"dev": true,
+ "peer": true,
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "@ethereumjs/rlp": "^4.0.1",
+ "ethereum-cryptography": "^2.0.0",
+ "micro-ftch": "^0.3.1"
}
},
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "@noble/curves": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
+ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
"dev": true,
+ "peer": true,
"requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
+ "@noble/hashes": "1.4.0"
}
},
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "@noble/hashes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
+ "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
"dev": true,
- "requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- }
+ "peer": true
},
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "@scure/base": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
+ "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
"dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
+ "peer": true
},
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "@scure/bip32": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
+ "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
"dev": true,
+ "peer": true,
"requires": {
- "p-limit": "^1.1.0"
+ "@noble/curves": "~1.4.0",
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
}
},
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "yargs": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz",
- "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==",
+ "@scure/bip39": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
+ "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
"dev": true,
+ "peer": true,
"requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.1.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
+ "@noble/hashes": "~1.4.0",
+ "@scure/base": "~1.1.6"
}
},
- "yargs-parser": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
- "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==",
+ "ethereum-cryptography": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
+ "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
"dev": true,
+ "peer": true,
"requires": {
- "camelcase": "^4.1.0"
+ "@noble/curves": "1.4.2",
+ "@noble/hashes": "1.4.0",
+ "@scure/bip32": "1.4.0",
+ "@scure/bip39": "1.3.0"
}
}
}
},
- "tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dev": true,
- "requires": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
+ "webdriver-bidi-protocol": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz",
+ "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==",
+ "dev": true
},
- "tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dev": true,
"requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
+ "iconv-lite": "0.6.3"
},
"dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
}
},
- "temp": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz",
- "integrity": "sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true
},
- "timers-ext": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
- "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
+ "peer": true,
"requires": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
+ "isexe": "^2.0.0"
}
},
- "tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "which-typed-array": {
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
"dev": true,
+ "peer": true,
"requires": {
- "rimraf": "^3.0.0"
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
}
},
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "peer": true
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
- },
- "treeify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
- "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
- "dev": true
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
"dev": true,
- "peer": true
+ "requires": {
+ "string-width": "^4.0.0"
+ }
},
- "tsort": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz",
- "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==",
+ "word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"peer": true
},
- "tweetnacl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
- "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true,
"peer": true
},
- "tweetnacl-util": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz",
- "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==",
+ "wordwrapjs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
+ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
"dev": true,
- "peer": true
+ "peer": true,
+ "requires": {
+ "reduce-flatten": "^2.0.0",
+ "typical": "^5.2.0"
+ },
+ "dependencies": {
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "peer": true
+ }
+ }
},
- "type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+ "workerpool": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
+ "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
"dev": true
},
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "peer": true
- },
- "unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
- "undici": {
- "version": "5.22.1",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz",
- "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==",
+ "wrap-ansi-cjs": {
+ "version": "npm:wrap-ansi@7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"peer": true,
"requires": {
- "busboy": "^1.6.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "peer": true
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
- "peer": true
- },
- "util-deprecate": {
+ "wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "peer": true
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
+ "requires": {}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
- "workerpool": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
- "dev": true,
- "peer": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
},
"dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
}
}
},
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
- "dev": true,
- "requires": {}
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
},
"yargs-unparser": {
@@ -11453,7 +16580,6 @@
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
- "peer": true,
"requires": {
"camelcase": "^6.0.0",
"decamelize": "^4.0.0",
@@ -11465,15 +16591,13 @@
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"decamelize": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
"integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true,
- "peer": true
+ "dev": true
}
}
},
@@ -11487,12 +16611,24 @@
"fd-slicer": "~1.1.0"
}
},
+ "yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "peer": true
+ },
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "peer": true
+ "dev": true
+ },
+ "zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index cad933e..f8e1789 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,7 @@
{
"scripts": {
+ "hardhat:compile": "npx hardhat compile",
+ "hardhat:test:smoke": "npx hardhat test test/hardhat/smoke.test.js",
"lint:sol": "npx solium -d src",
"lint:sol:fix": "npx solium -d src --fix",
"lint:sol:test": "npx solium -d test",
@@ -12,7 +14,9 @@
"uml:test": "npx sol2uml class test"
},
"devDependencies": {
- "@nomicfoundation/hardhat-foundry": "^1.0.1",
+ "@nomicfoundation/hardhat-foundry": "^1.2.1",
+ "@nomicfoundation/hardhat-toolbox": "^6.1.2",
+ "hardhat": "^2.28.6",
"sol2uml": "^2.5.20",
"surya": "^0.4.6"
}
diff --git a/remappings.txt b/remappings.txt
index abeed5c..5f1ccf5 100644
--- a/remappings.txt
+++ b/remappings.txt
@@ -1,3 +1,3 @@
CMTAT/=lib/CMTAT/contracts/
RuleEngine/=lib/RuleEngine/src/
-OZ/=lib/openzeppelin-contracts/contracts/
\ No newline at end of file
+@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
diff --git a/script/DeployCMTATWithBlacklistAndSanctionsList.s.sol b/script/DeployCMTATWithBlacklistAndSanctionsList.s.sol
index a6bca8d..6579cf6 100644
--- a/script/DeployCMTATWithBlacklistAndSanctionsList.s.sol
+++ b/script/DeployCMTATWithBlacklistAndSanctionsList.s.sol
@@ -5,7 +5,7 @@ import {Script} from "forge-std/Script.sol";
import {ICMTATConstructor, CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol";
import {IERC1643CMTAT} from "CMTAT/interfaces/tokenization/draft-IERC1643CMTAT.sol";
import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol";
import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol";
import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol";
diff --git a/script/DeployCMTATWithWhitelist.s.sol b/script/DeployCMTATWithWhitelist.s.sol
index 0ffdbe9..e01f4fd 100644
--- a/script/DeployCMTATWithWhitelist.s.sol
+++ b/script/DeployCMTATWithWhitelist.s.sol
@@ -25,7 +25,7 @@ contract DeployCMTATWithWhitelist is Script {
ICMTATConstructor.Engine memory engines = ICMTATConstructor.Engine(IRuleEngine(address(0)));
token = new CMTATStandalone(forwarder, address(this), erc20Attributes, extraInformationAttributes, engines);
- rule = new RuleWhitelist(admin, address(0), checkSpender);
+ rule = new RuleWhitelist(admin, address(0), checkSpender, false);
token.setRuleEngine(IRuleEngine(address(rule)));
diff --git a/src/mocks/IERC3643ComplianceFull.sol b/src/mocks/IERC3643ComplianceFull.sol
new file mode 100644
index 0000000..44a1be7
--- /dev/null
+++ b/src/mocks/IERC3643ComplianceFull.sol
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+
+/**
+ * @title IERC3643ComplianceFull
+ * @dev Flat interface redeclaring the complete ERC-3643 ICompliance function set,
+ * including functions inherited by IERC3643Compliance from its parent interfaces
+ * (IERC3643ComplianceRead.canTransfer, IERC3643IComplianceContract.transferred).
+ *
+ * Purpose: computing the correct ERC-165 interface ID for the full ERC-3643
+ * ICompliance interface via `type(IERC3643ComplianceFull).interfaceId`.
+ *
+ * Background: `type(IFoo).interfaceId` only XORs selectors defined *directly* on
+ * `IFoo`, not those inherited from parent interfaces. Using `type(IERC3643Compliance).interfaceId`
+ * would therefore miss `canTransfer` and `transferred`. This flat interface
+ * redeclares all eight functions so the XOR covers the full hierarchy.
+ *
+ * Do NOT use this interface as a type annotation or for casting — use the actual
+ * `IERC3643Compliance` (from RuleEngine) for that.
+ *
+ * Computed value: `type(IERC3643ComplianceFull).interfaceId == 0x3144991c`
+ */
+interface IERC3643ComplianceFull {
+ // From IERC3643ComplianceRead
+ function canTransfer(address from, address to, uint256 value) external view returns (bool isValid);
+ // From IERC3643IComplianceContract
+ function transferred(address from, address to, uint256 value) external;
+ // From IERC3643Compliance (directly defined)
+ function bindToken(address token) external;
+ function unbindToken(address token) external;
+ function isTokenBound(address token) external view returns (bool isBound);
+ function getTokenBound() external view returns (address token);
+ function created(address to, uint256 value) external;
+ function destroyed(address from, uint256 value) external;
+}
diff --git a/src/mocks/IdentityRegistryMock.sol b/src/mocks/IdentityRegistryMock.sol
index c1f4349..936a26f 100644
--- a/src/mocks/IdentityRegistryMock.sol
+++ b/src/mocks/IdentityRegistryMock.sol
@@ -6,6 +6,10 @@ import {IIdentityRegistryVerified} from "src/rules/interfaces/IIdentityRegistry.
contract IdentityRegistryMock is IIdentityRegistryVerified {
mapping(address => bool) private verified;
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setVerified(address user, bool verified_) external {
verified[user] = verified_;
}
diff --git a/src/mocks/MockERC20TransferFromFalse.sol b/src/mocks/MockERC20TransferFromFalse.sol
index 9148545..96469fe 100644
--- a/src/mocks/MockERC20TransferFromFalse.sol
+++ b/src/mocks/MockERC20TransferFromFalse.sol
@@ -4,6 +4,10 @@ pragma solidity ^0.8.20;
contract MockERC20TransferFromFalse {
mapping(address => mapping(address => uint256)) private _allowances;
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setAllowance(address owner, address spender, uint256 value) external {
_allowances[owner][spender] = value;
}
diff --git a/src/mocks/MockERC20WithTransferContext.sol b/src/mocks/MockERC20WithTransferContext.sol
index aac490d..72ee311 100644
--- a/src/mocks/MockERC20WithTransferContext.sol
+++ b/src/mocks/MockERC20WithTransferContext.sol
@@ -1,14 +1,22 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {ERC20} from "OZ/token/ERC20/ERC20.sol";
+import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ITransferContext} from "src/rules/interfaces/ITransferContext.sol";
contract MockERC20WithTransferContext is ERC20 {
ITransferContext public rule;
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) {}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setRule(address rule_) external {
rule = ITransferContext(rule_);
}
@@ -17,19 +25,6 @@ contract MockERC20WithTransferContext is ERC20 {
_mint(to, value);
}
- function transfer(address to, uint256 value) public virtual override returns (bool) {
- bool success = super.transfer(to, value);
- _notifyFungible(_msgSender(), _msgSender(), to, value);
- return success;
- }
-
- function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) {
- address sender = _msgSender();
- bool success = super.transferFrom(from, to, value);
- _notifyFungible(sender, from, to, value);
- return success;
- }
-
function transferWithContext(address to, uint256 value, bool useFungibleContext, uint256 tokenId)
external
returns (bool)
@@ -59,6 +54,27 @@ contract MockERC20WithTransferContext is ERC20 {
return true;
}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function transfer(address to, uint256 value) public virtual override returns (bool) {
+ bool success = super.transfer(to, value);
+ _notifyFungible(_msgSender(), _msgSender(), to, value);
+ return success;
+ }
+
+ function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) {
+ address sender = _msgSender();
+ bool success = super.transferFrom(from, to, value);
+ _notifyFungible(sender, from, to, value);
+ return success;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _notifyFungible(address sender, address from, address to, uint256 value) internal {
if (address(rule) == address(0)) {
return;
diff --git a/src/mocks/MockERC721WithTransferContext.sol b/src/mocks/MockERC721WithTransferContext.sol
index 38b0977..c6f9879 100644
--- a/src/mocks/MockERC721WithTransferContext.sol
+++ b/src/mocks/MockERC721WithTransferContext.sol
@@ -1,14 +1,22 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {ERC721} from "OZ/token/ERC721/ERC721.sol";
+import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import {ITransferContext} from "src/rules/interfaces/ITransferContext.sol";
contract MockERC721WithTransferContext is ERC721 {
ITransferContext public rule;
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setRule(address rule_) external {
rule = ITransferContext(rule_);
}
@@ -17,12 +25,20 @@ contract MockERC721WithTransferContext is ERC721 {
_mint(to, tokenId);
}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function transferFrom(address from, address to, uint256 tokenId) public virtual override {
address sender = _msgSender();
super.transferFrom(from, to, tokenId);
_notifyRule(sender, from, to, tokenId);
}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _notifyRule(address sender, address from, address to, uint256 tokenId) internal {
if (address(rule) == address(0)) {
return;
diff --git a/src/mocks/SanctionListOracle.sol b/src/mocks/SanctionListOracle.sol
index b81a377..41d586d 100644
--- a/src/mocks/SanctionListOracle.sol
+++ b/src/mocks/SanctionListOracle.sol
@@ -6,6 +6,10 @@ import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol";
contract SanctionListOracle is ISanctionsList {
mapping(address => bool) private sanctionedAddresses;
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function addToSanctionsList(address newSanction) public {
sanctionedAddresses[newSanction] = true;
}
diff --git a/src/mocks/TotalSupplyMock.sol b/src/mocks/TotalSupplyMock.sol
index 92a6485..3b72179 100644
--- a/src/mocks/TotalSupplyMock.sol
+++ b/src/mocks/TotalSupplyMock.sol
@@ -4,11 +4,15 @@ pragma solidity ^0.8.20;
contract TotalSupplyMock {
uint256 private _totalSupply;
- function totalSupply() external view returns (uint256) {
- return _totalSupply;
- }
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
function setTotalSupply(uint256 newTotalSupply) external {
_totalSupply = newTotalSupply;
}
+
+ function totalSupply() external view returns (uint256) {
+ return _totalSupply;
+ }
}
diff --git a/src/mocks/harness/DeploymentCoverageHarnesses.sol b/src/mocks/harness/DeploymentCoverageHarnesses.sol
index d3e3d17..3ebbc24 100644
--- a/src/mocks/harness/DeploymentCoverageHarnesses.sol
+++ b/src/mocks/harness/DeploymentCoverageHarnesses.sol
@@ -13,35 +13,69 @@ import {RuleWhitelistWrapperOwnable2Step} from "src/rules/validation/deployment/
import {RuleERC2980Ownable2Step} from "src/rules/validation/deployment/RuleERC2980Ownable2Step.sol";
contract RuleBlacklistHarness is RuleBlacklist {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable) RuleBlacklist(admin, forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleWhitelistHarness is RuleWhitelist {
- constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
- RuleWhitelist(admin, forwarderIrrevocable, checkSpender_)
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ constructor(address admin, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ RuleWhitelist(admin, forwarderIrrevocable, checkSpender_, allowMintBurn)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleWhitelistWrapperHarness is RuleWhitelistWrapper {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleERC2980Harness is RuleERC2980 {
- constructor(address admin, address forwarderIrrevocable) RuleERC2980(admin, forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ constructor(address admin, address forwarderIrrevocable, bool allowBurn)
+ RuleERC2980(admin, forwarderIrrevocable, allowBurn)
+ {}
+
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
@@ -49,45 +83,87 @@ contract RuleERC2980Harness is RuleERC2980 {
}
contract RuleSanctionsListHarness is RuleSanctionsList {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
RuleSanctionsList(admin, forwarderIrrevocable, sanctionContractOracle_)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleBlacklistOwnable2StepHarness is RuleBlacklistOwnable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable) RuleBlacklistOwnable2Step(owner, forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleWhitelistOwnable2StepHarness is RuleWhitelistOwnable2Step {
- constructor(address owner, address forwarderIrrevocable, bool checkSpender_)
- RuleWhitelistOwnable2Step(owner, forwarderIrrevocable, checkSpender_)
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ constructor(address owner, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ RuleWhitelistOwnable2Step(owner, forwarderIrrevocable, checkSpender_, allowMintBurn)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleWhitelistWrapperOwnable2StepHarness is RuleWhitelistWrapperOwnable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable, bool checkSpender_)
RuleWhitelistWrapperOwnable2Step(owner, forwarderIrrevocable, checkSpender_)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
}
}
contract RuleERC2980Ownable2StepHarness is RuleERC2980Ownable2Step {
- constructor(address owner, address forwarderIrrevocable) RuleERC2980Ownable2Step(owner, forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ constructor(address owner, address forwarderIrrevocable, bool allowBurn)
+ RuleERC2980Ownable2Step(owner, forwarderIrrevocable, allowBurn)
+ {}
+
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
function exposedMsgDataLength() external view returns (uint256) {
return _msgData().length;
diff --git a/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol b/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol
index 8584253..dedfac7 100644
--- a/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol
+++ b/src/mocks/harness/RuleSanctionsListOwnable2StepHarness.sol
@@ -5,10 +5,18 @@ import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol";
import {RuleSanctionsListOwnable2Step} from "src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol";
contract RuleSanctionsListOwnable2StepHarness is RuleSanctionsListOwnable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
RuleSanctionsListOwnable2Step(owner, forwarderIrrevocable, sanctionContractOracle_)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgSender() external view returns (address) {
return _msgSender();
}
diff --git a/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol
index a6095d9..9aa9d82 100644
--- a/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol
+++ b/src/mocks/harness/RuleSpenderWhitelistHarnesses.sol
@@ -5,8 +5,16 @@ import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderW
import {RuleSpenderWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol";
contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable) RuleSpenderWhitelist(admin, forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgSender() external view returns (address) {
return _msgSender();
}
@@ -21,10 +29,18 @@ contract RuleSpenderWhitelistHarness is RuleSpenderWhitelist {
}
contract RuleSpenderWhitelistOwnable2StepHarness is RuleSpenderWhitelistOwnable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable)
RuleSpenderWhitelistOwnable2Step(owner, forwarderIrrevocable)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedMsgSender() external view returns (address) {
return _msgSender();
}
diff --git a/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol b/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol
index 36a74ab..c02598b 100644
--- a/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol
+++ b/src/mocks/harness/RuleWhitelistWrapperHarnessInternal.sol
@@ -4,10 +4,18 @@ pragma solidity ^0.8.20;
import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol";
contract RuleWhitelistWrapperHarnessInternal is RuleWhitelistWrapper {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
RuleWhitelistWrapper(admin, forwarderIrrevocable, checkSpender_)
{}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function exposedTransferredSpenderInternal(address spender, address from, address to, uint256 value) external view {
_transferred(spender, from, to, value);
}
diff --git a/src/modules/AccessControlModuleStandalone.sol b/src/modules/AccessControlModuleStandalone.sol
index 9c5a706..9c757f4 100644
--- a/src/modules/AccessControlModuleStandalone.sol
+++ b/src/modules/AccessControlModuleStandalone.sol
@@ -3,13 +3,17 @@
pragma solidity ^0.8.20;
/* ==== OpenZeppelin === */
-import {AccessControl} from "OZ/access/AccessControl.sol";
-import {IAccessControl} from "OZ/access/IAccessControl.sol";
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
+import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
abstract contract AccessControlModuleStandalone is AccessControlEnumerable {
error AccessControlModuleStandalone_AddressZeroNotAllowed();
- /* ============ Constructor ============ */
+
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
/**
* @notice Assigns the provided address as the default admin.
* @dev
@@ -20,7 +24,6 @@ abstract contract AccessControlModuleStandalone is AccessControlEnumerable {
*
* @param admin The address that will receive the `DEFAULT_ADMIN_ROLE`.
*/
-
constructor(address admin) {
require(admin != address(0), AccessControlModuleStandalone_AddressZeroNotAllowed());
// we don't check the return value
@@ -30,8 +33,9 @@ abstract contract AccessControlModuleStandalone is AccessControlEnumerable {
}
/*//////////////////////////////////////////////////////////////
- PUBLIC/EXTERNAL FUNCTIONS
+ PUBLIC FUNCTIONS
//////////////////////////////////////////////////////////////*/
+
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
diff --git a/src/modules/MetaTxModuleStandalone.sol b/src/modules/MetaTxModuleStandalone.sol
index 88c1df5..9902688 100644
--- a/src/modules/MetaTxModuleStandalone.sol
+++ b/src/modules/MetaTxModuleStandalone.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
-import {ERC2771Context} from "OZ/metatx/ERC2771Context.sol";
+import {ERC2771Context} from "@openzeppelin/contracts/metatx/ERC2771Context.sol";
/**
* @dev Meta transaction (gasless) module.
diff --git a/src/modules/VersionModule.sol b/src/modules/VersionModule.sol
index 0ae2ee1..8da4a78 100644
--- a/src/modules/VersionModule.sol
+++ b/src/modules/VersionModule.sol
@@ -8,7 +8,11 @@ import {IERC3643Version} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol
* @notice Exposes the contract version as required by ERC-3643.
*/
abstract contract VersionModule is IERC3643Version {
- string private constant VERSION = "0.2.0";
+ string private constant VERSION = "0.3.0";
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/// @inheritdoc IERC3643Version
function version() public view virtual override returns (string memory version_) {
diff --git a/src/rules/operation/RuleConditionalTransferLight.sol b/src/rules/operation/RuleConditionalTransferLight.sol
index 1d16d00..787427a 100644
--- a/src/rules/operation/RuleConditionalTransferLight.sol
+++ b/src/rules/operation/RuleConditionalTransferLight.sol
@@ -1,12 +1,14 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {IERC165} from "OZ/utils/introspection/IERC165.sol";
-import {IRule} from "RuleEngine/interfaces/IRule.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
+import {IERC3643ComplianceFull} from "../../mocks/IERC3643ComplianceFull.sol";
import {AccessControlModuleStandalone} from "../../modules/AccessControlModuleStandalone.sol";
-import {ERC3643ComplianceModule} from "RuleEngine/modules/ERC3643ComplianceModule.sol";
import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
/**
@@ -14,16 +16,20 @@ import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransf
* @dev Requires operator approval for each transfer. Same transfer (from, to, value)
* can be approved multiple times to allow repeated transfers.
*/
-contract RuleConditionalTransferLight is
- AccessControlModuleStandalone,
- ERC3643ComplianceModule,
- RuleConditionalTransferLightBase
-{
+contract RuleConditionalTransferLight is AccessControlModuleStandalone, RuleConditionalTransferLightBase {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
/**
* @param admin Address of the contract admin.
*/
constructor(address admin) AccessControlModuleStandalone(admin) {}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
@@ -31,23 +37,19 @@ contract RuleConditionalTransferLight is
override(AccessControlEnumerable, IERC165)
returns (bool)
{
- return interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID || interfaceId == type(IRule).interfaceId
+ return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643ComplianceFull).interfaceId
|| AccessControlEnumerable.supportsInterface(interfaceId);
}
- function created(address to, uint256 value) external onlyBoundToken {
- _transferred(address(0), to, value);
- }
-
- function destroyed(address from, uint256 value) external onlyBoundToken {
- _transferred(from, address(0), value);
- }
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
function _authorizeTransferApproval() internal view virtual override onlyRole(OPERATOR_ROLE) {}
- function _authorizeTransferExecution() internal view virtual override {
- require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()));
- }
-
function _onlyComplianceManager() internal virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) {}
}
diff --git a/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol b/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
index 6fcf88f..0ba8e65 100644
--- a/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
+++ b/src/rules/operation/RuleConditionalTransferLightOwnable2Step.sol
@@ -1,11 +1,14 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {IRule} from "RuleEngine/interfaces/IRule.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
-import {IERC165} from "OZ/utils/introspection/IERC165.sol";
+import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
+import {IERC3643ComplianceFull} from "../../mocks/IERC3643ComplianceFull.sol";
import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransferLightBase.sol";
/**
@@ -13,14 +16,30 @@ import {RuleConditionalTransferLightBase} from "./abstract/RuleConditionalTransf
* @notice Ownable2Step variant of RuleConditionalTransferLight.
*/
contract RuleConditionalTransferLightOwnable2Step is RuleConditionalTransferLightBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner) Ownable(owner) {}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
- return interfaceId == type(IERC165).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
- || interfaceId == type(IRule).interfaceId;
+ return interfaceId == type(IERC165).interfaceId
+ || interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643ComplianceFull).interfaceId;
}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeTransferApproval() internal view virtual override onlyOwner {}
- function _authorizeTransferExecution() internal view virtual override onlyOwner {}
+ function _onlyComplianceManager() internal virtual override onlyOwner {}
}
diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol b/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol
new file mode 100644
index 0000000..83b4b3b
--- /dev/null
+++ b/src/rules/operation/abstract/RuleConditionalTransferLightApprovalBase.sol
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: MPL-2.0
+pragma solidity ^0.8.20;
+
+import {ITransferContext} from "../../interfaces/ITransferContext.sol";
+import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol";
+
+/**
+ * @title RuleConditionalTransferLightApprovalBase
+ * @dev Pure approval state machine: stores and consumes per-transfer approvals.
+ * No knowledge of token binding or compliance interfaces.
+ */
+abstract contract RuleConditionalTransferLightApprovalBase is RuleConditionalTransferLightInvariantStorage {
+ // Mapping from transfer hash to approval count
+ mapping(bytes32 => uint256) public approvalCounts;
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyTransferApprover() {
+ _authorizeTransferApproval();
+ _;
+ }
+
+ modifier onlyTransferExecutor() {
+ _authorizeTransferExecution();
+ _;
+ }
+
+ function _authorizeTransferApproval() internal view virtual;
+
+ function _authorizeTransferExecution() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor {
+ _transferredFromContext(ctx);
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover {
+ bytes32 transferHash = _transferHash(from, to, value);
+ approvalCounts[transferHash] += 1;
+ emit TransferApproved(from, to, value, approvalCounts[transferHash]);
+ }
+
+ function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover {
+ bytes32 transferHash = _transferHash(from, to, value);
+ uint256 count = approvalCounts[transferHash];
+ require(count != 0, TransferApprovalNotFound());
+ approvalCounts[transferHash] = count - 1;
+ emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]);
+ }
+
+ function approvedCount(address from, address to, uint256 value) public view returns (uint256) {
+ bytes32 transferHash = _transferHash(from, to, value);
+ return approvalCounts[transferHash];
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual {
+ _transferred(ctx.from, ctx.to, ctx.value);
+ }
+
+ function _transferred(address from, address to, uint256 value) internal virtual {
+ if (from == address(0) || to == address(0)) {
+ return;
+ }
+ bytes32 transferHash = _transferHash(from, to, value);
+ uint256 count = approvalCounts[transferHash];
+
+ require(count != 0, TransferNotApproved());
+
+ approvalCounts[transferHash] = count - 1;
+ emit TransferExecuted(from, to, value, approvalCounts[transferHash]);
+ }
+
+ function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) {
+ // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead.
+ assembly ("memory-safe") {
+ let ptr := mload(0x40)
+ mstore(ptr, shl(96, from))
+ mstore(add(ptr, 0x20), shl(96, to))
+ mstore(add(ptr, 0x40), value)
+ hash := keccak256(ptr, 0x60)
+ }
+ }
+}
diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
index 3b0a9cb..7b2bfca 100644
--- a/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
+++ b/src/rules/operation/abstract/RuleConditionalTransferLightBase.sol
@@ -6,66 +6,80 @@ import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC
import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
import {IRule} from "RuleEngine/interfaces/IRule.sol";
-import {ITransferContext} from "../../interfaces/ITransferContext.sol";
-import {IERC20} from "OZ/token/ERC20/IERC20.sol";
-import {RuleConditionalTransferLightInvariantStorage} from "./RuleConditionalTransferLightInvariantStorage.sol";
+import {ERC3643ComplianceModule} from "RuleEngine/modules/ERC3643ComplianceModule.sol";
+import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import {RuleConditionalTransferLightApprovalBase} from "./RuleConditionalTransferLightApprovalBase.sol";
import {VersionModule} from "../../../modules/VersionModule.sol";
/**
* @title RuleConditionalTransferLightBase
- * @dev Requires operator approval for each transfer. Same transfer (from, to, value)
- * can be approved multiple times to allow repeated transfers.
+ * @dev Wires the approval state machine into the ERC-3643 / ERC-1404 / IRule compliance
+ * interface layer and enforces single-token binding.
*/
abstract contract RuleConditionalTransferLightBase is
VersionModule,
- RuleConditionalTransferLightInvariantStorage,
+ ERC3643ComplianceModule,
+ RuleConditionalTransferLightApprovalBase,
IRule
{
- // Mapping from transfer hash to approval count
- mapping(bytes32 => uint256) public approvalCounts;
+ using SafeERC20 for IERC20;
- function approveTransfer(address from, address to, uint256 value) public onlyTransferApprover {
- bytes32 transferHash = _transferHash(from, to, value);
- approvalCounts[transferHash] += 1;
- emit TransferApproved(from, to, value, approvalCounts[transferHash]);
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
+ return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED;
}
- function cancelTransferApproval(address from, address to, uint256 value) public onlyTransferApprover {
- bytes32 transferHash = _transferHash(from, to, value);
- uint256 count = approvalCounts[transferHash];
- require(count != 0, TransferApprovalNotFound());
- approvalCounts[transferHash] = count - 1;
- emit TransferApprovalCancelled(from, to, value, approvalCounts[transferHash]);
+ function messageForTransferRestriction(uint8 restrictionCode)
+ external
+ pure
+ override(IERC1404)
+ returns (string memory)
+ {
+ if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) {
+ return TEXT_TRANSFER_REQUEST_NOT_APPROVED;
+ }
+ return TEXT_CODE_NOT_FOUND;
}
+ function created(address to, uint256 value) external onlyBoundToken {
+ _transferred(address(0), to, value);
+ }
+
+ function destroyed(address from, uint256 value) external onlyBoundToken {
+ _transferred(from, address(0), value);
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
/**
* @notice Approves and performs a transferFrom using this rule as spender.
* @dev Requires `from` to have approved this contract on the token.
* @dev This function is only safe for tokens that call back `transferred()` during transfer.
* @dev CEI is intentionally inverted so the approval exists for the callback.
*/
- function approveAndTransferIfAllowed(address token, address from, address to, uint256 value)
+ function approveAndTransferIfAllowed(address from, address to, uint256 value)
public
onlyTransferApprover
returns (bool)
{
- require(token != address(0), RuleConditionalTransferLight_TokenAddressZeroNotAllowed());
+ address token = getTokenBound();
+ require(token != address(0), RuleConditionalTransferLight_TokenNotBound());
approveTransfer(from, to, value);
uint256 allowed = IERC20(token).allowance(from, address(this));
require(allowed >= value, RuleConditionalTransferLight_InsufficientAllowance(token, from, allowed, value));
- bool success = IERC20(token).transferFrom(from, to, value);
- require(success, RuleConditionalTransferLight_TransferFailed());
+ IERC20(token).safeTransferFrom(from, to, value);
return true;
}
- function approvedCount(address from, address to, uint256 value) public view returns (uint256) {
- bytes32 transferHash = _transferHash(from, to, value);
- return approvalCounts[transferHash];
- }
-
function transferred(address from, address to, uint256 value)
public
override(IERC3643IComplianceContract)
@@ -88,6 +102,20 @@ abstract contract RuleConditionalTransferLightBase is
_transferred(from, to, value);
}
+ /**
+ * @notice Binds a token to this rule. Reverts if a token is already bound.
+ * @dev Enforces single-token binding to prevent cross-token approval replay.
+ * To migrate to a new token, call `unbindToken` first.
+ * @dev WARNING: `unbindToken` does not clear `approvalCounts`. Stale approvals
+ * from the previous token remain in storage and can be consumed after rebinding.
+ * The operator who controls rebinding also controls approvals, so the trust
+ * model is preserved, but integrators should be aware of this behavior.
+ */
+ function bindToken(address token) public override onlyComplianceManager {
+ require(getTokenBound() == address(0), RuleConditionalTransferLight_TokenAlreadyBound());
+ _bindToken(token);
+ }
+
function detectTransferRestriction(address from, address to, uint256 value)
public
view
@@ -138,69 +166,11 @@ abstract contract RuleConditionalTransferLightBase is
== uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
}
- function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
- return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED;
- }
-
- function messageForTransferRestriction(uint8 restrictionCode)
- external
- pure
- override(IERC1404)
- returns (string memory)
- {
- if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) {
- return TEXT_TRANSFER_REQUEST_NOT_APPROVED;
- }
- return TEXT_CODE_NOT_FOUND;
- }
-
- function transferred(ITransferContext.FungibleTransferContext calldata ctx) external onlyTransferExecutor {
- _transferredFromContext(ctx);
- }
-
- function _transferredFromContext(ITransferContext.FungibleTransferContext calldata ctx) internal virtual {
- _transferred(ctx.from, ctx.to, ctx.value);
- }
-
- function _transferred(address from, address to, uint256 value) internal virtual {
- if (from == address(0) || to == address(0)) {
- return;
- }
- bytes32 transferHash = _transferHash(from, to, value);
- uint256 count = approvalCounts[transferHash];
-
- require(count != 0, TransferNotApproved());
-
- approvalCounts[transferHash] = count - 1;
- emit TransferExecuted(from, to, value, approvalCounts[transferHash]);
- }
-
- function _transferHash(address from, address to, uint256 value) internal pure virtual returns (bytes32 hash) {
- // Linter suggestion (`asm-keccak256`): hash packed values in assembly to avoid abi.encodePacked overhead.
- assembly ("memory-safe") {
- let ptr := mload(0x40)
- mstore(ptr, shl(96, from))
- mstore(add(ptr, 0x20), shl(96, to))
- mstore(add(ptr, 0x40), value)
- hash := keccak256(ptr, 0x60)
- }
- }
-
/*//////////////////////////////////////////////////////////////
ACCESS CONTROL
//////////////////////////////////////////////////////////////*/
- modifier onlyTransferApprover() {
- _authorizeTransferApproval();
- _;
+ function _authorizeTransferExecution() internal view override {
+ require(isTokenBound(_msgSender()), RuleConditionalTransferLight_TransferExecutorUnauthorized(_msgSender()));
}
-
- modifier onlyTransferExecutor() {
- _authorizeTransferExecution();
- _;
- }
-
- function _authorizeTransferApproval() internal view virtual;
-
- function _authorizeTransferExecution() internal view virtual;
}
diff --git a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol
index 83639b2..61aed67 100644
--- a/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol
+++ b/src/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol
@@ -12,18 +12,18 @@ abstract contract RuleConditionalTransferLightInvariantStorage is RuleSharedInva
// It is very important that each rule uses an unique code
uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 46;
+ /* ============ Events ============ */
+ event TransferApproved(address indexed from, address indexed to, uint256 value, uint256 count);
+ event TransferExecuted(address indexed from, address indexed to, uint256 value, uint256 remaining);
+ event TransferApprovalCancelled(address indexed from, address indexed to, uint256 value, uint256 remaining);
+
/* ============ Custom error ============ */
error RuleConditionalTransferLight_TransferExecutorUnauthorized(address account);
- error RuleConditionalTransferLight_TokenAddressZeroNotAllowed();
+ error RuleConditionalTransferLight_TokenNotBound();
+ error RuleConditionalTransferLight_TokenAlreadyBound();
error RuleConditionalTransferLight_InsufficientAllowance(
address token, address owner, uint256 allowance, uint256 required
);
- error RuleConditionalTransferLight_TransferFailed();
error TransferNotApproved();
error TransferApprovalNotFound();
-
- /* ============ Events ============ */
- event TransferApproved(address indexed from, address indexed to, uint256 value, uint256 count);
- event TransferExecuted(address indexed from, address indexed to, uint256 value, uint256 remaining);
- event TransferApprovalCancelled(address indexed from, address indexed to, uint256 value, uint256 remaining);
}
diff --git a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol
index 40e6e71..a183d2e 100644
--- a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol
+++ b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSet.sol
@@ -23,10 +23,6 @@ abstract contract RuleAddressSet is
RuleAddressSetInvariantStorage,
IAddressList
{
- /*//////////////////////////////////////////////////////////////
- STATE
- //////////////////////////////////////////////////////////////*/
-
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
@@ -38,7 +34,25 @@ abstract contract RuleAddressSet is
constructor(address forwarderIrrevocable) MetaTxModuleStandalone(forwarderIrrevocable) {}
/*//////////////////////////////////////////////////////////////
- CORE LOGIC
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyAddressListAdd() {
+ _authorizeAddressListAdd();
+ _;
+ }
+
+ modifier onlyAddressListRemove() {
+ _authorizeAddressListRemove();
+ _;
+ }
+
+ function _authorizeAddressListAdd() internal view virtual;
+
+ function _authorizeAddressListRemove() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
//////////////////////////////////////////////////////////////*/
/**
@@ -91,24 +105,6 @@ abstract contract RuleAddressSet is
emit RemoveAddress(targetAddress);
}
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlyAddressListAdd() {
- _authorizeAddressListAdd();
- _;
- }
-
- modifier onlyAddressListRemove() {
- _authorizeAddressListRemove();
- _;
- }
-
- function _authorizeAddressListAdd() internal view virtual;
-
- function _authorizeAddressListRemove() internal view virtual;
-
/**
* @notice Returns the total number of currently listed addresses.
* @return count The number of listed addresses.
@@ -148,7 +144,7 @@ abstract contract RuleAddressSet is
}
/*//////////////////////////////////////////////////////////////
- ERC-2771 META TX
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
/// @inheritdoc ERC2771Context
diff --git a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol
index 7ff5ae9..7fae61d 100644
--- a/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol
+++ b/src/rules/validation/abstract/RuleAddressSet/RuleAddressSetInternal.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
/* ==== OpenZeppelin === */
-import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
+import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
/**
* @title Rule Address Set (Internal)
@@ -23,7 +23,7 @@ abstract contract RuleAddressSetInternal {
EnumerableSet.AddressSet private _listedAddresses;
/*//////////////////////////////////////////////////////////////
- INTERNAL
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
/**
diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol
index 5d1a8a9..d31478e 100644
--- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol
+++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleAddressSetInvariantStorage.sol
@@ -3,14 +3,14 @@
pragma solidity ^0.8.20;
abstract contract RuleAddressSetInvariantStorage {
+ /* ============ Role ============ */
+ bytes32 public constant ADDRESS_LIST_REMOVE_ROLE = keccak256("ADDRESS_LIST_REMOVE_ROLE");
+ bytes32 public constant ADDRESS_LIST_ADD_ROLE = keccak256("ADDRESS_LIST_ADD_ROLE");
+
/* ============ Custom errors ============ */
/// @notice Thrown when trying to add an address that is already listed.
error RuleAddressSet_AddressAlreadyListed();
/// @notice Thrown when trying to remove an address that is not listed.
error RuleAddressSet_AddressNotFound();
-
- /* ============ Role ============ */
- bytes32 public constant ADDRESS_LIST_REMOVE_ROLE = keccak256("ADDRESS_LIST_REMOVE_ROLE");
- bytes32 public constant ADDRESS_LIST_ADD_ROLE = keccak256("ADDRESS_LIST_ADD_ROLE");
}
diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol
index 02fa84a..a356e7b 100644
--- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol
+++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleBlacklistInvariantStorage.sol
@@ -5,12 +5,7 @@ pragma solidity ^0.8.20;
import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol";
abstract contract RuleBlacklistInvariantStorage is RuleSharedInvariantStorage {
- error RuleBlacklist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleBlacklist_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
/* ============ String message ============ */
-
string constant TEXT_ADDRESS_FROM_IS_BLACKLISTED = "The sender is blacklisted";
string constant TEXT_ADDRESS_TO_IS_BLACKLISTED = "The recipient is blacklisted";
string constant TEXT_ADDRESS_SPENDER_IS_BLACKLISTED = "The spender is blacklisted";
@@ -20,4 +15,9 @@ abstract contract RuleBlacklistInvariantStorage is RuleSharedInvariantStorage {
uint8 public constant CODE_ADDRESS_FROM_IS_BLACKLISTED = 36;
uint8 public constant CODE_ADDRESS_TO_IS_BLACKLISTED = 37;
uint8 public constant CODE_ADDRESS_SPENDER_IS_BLACKLISTED = 38;
+
+ error RuleBlacklist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleBlacklist_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
}
diff --git a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol
index eed9da1..59fc65f 100644
--- a/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol
+++ b/src/rules/validation/abstract/RuleAddressSet/invariantStorage/RuleWhitelistInvariantStorage.sol
@@ -5,12 +5,7 @@ pragma solidity ^0.8.20;
import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol";
abstract contract RuleWhitelistInvariantStorage is RuleSharedInvariantStorage {
- error RuleWhitelist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleWhitelist_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
/* ============ String message ============ */
-
string constant TEXT_ADDRESS_FROM_NOT_WHITELISTED = "The sender is not in the whitelist";
string constant TEXT_ADDRESS_TO_NOT_WHITELISTED = "The recipient is not in the whitelist";
string constant TEXT_ADDRESS_SPENDER_NOT_WHITELISTED = "The spender is not in the whitelist";
@@ -24,4 +19,9 @@ abstract contract RuleWhitelistInvariantStorage is RuleSharedInvariantStorage {
/* ============ Events ============ */
/// @dev Emitted when the `checkSpender` flag is updated.
event CheckSpenderUpdated(bool newValue);
+
+ error RuleWhitelist_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleWhitelist_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
}
diff --git a/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol b/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol
index b2d4e8d..2f5890a 100644
--- a/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol
+++ b/src/rules/validation/abstract/RuleERC2980/RuleERC2980Internal.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
/* ==== OpenZeppelin === */
-import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
+import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
/**
* @title RuleERC2980Internal
diff --git a/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol b/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol
index 8160ff8..0de56e5 100644
--- a/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol
+++ b/src/rules/validation/abstract/RuleERC2980/invariantStorage/RuleERC2980InvariantStorage.sol
@@ -4,14 +4,6 @@ pragma solidity ^0.8.20;
import {RuleSharedInvariantStorage} from "../../invariant/RuleSharedInvariantStorage.sol";
abstract contract RuleERC2980InvariantStorage is RuleSharedInvariantStorage {
- /* ============ Custom errors ============ */
- error RuleERC2980_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleERC2980_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
- error RuleERC2980_AddressAlreadyListed();
- error RuleERC2980_AddressNotFound();
-
/* ============ String message ============ */
string constant TEXT_ADDRESS_FROM_IS_FROZEN = "The sender address is frozen";
string constant TEXT_ADDRESS_TO_IS_FROZEN = "The recipient address is frozen";
@@ -49,4 +41,12 @@ abstract contract RuleERC2980InvariantStorage is RuleSharedInvariantStorage {
event AddFrozenlistAddress(address indexed targetAddress);
/// @notice Emitted when a single address is removed from the frozenlist.
event RemoveFrozenlistAddress(address indexed targetAddress);
+
+ /* ============ Custom errors ============ */
+ error RuleERC2980_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleERC2980_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
+ error RuleERC2980_AddressAlreadyListed();
+ error RuleERC2980_AddressNotFound();
}
diff --git a/src/rules/validation/abstract/base/RuleBlacklistBase.sol b/src/rules/validation/abstract/base/RuleBlacklistBase.sol
index 9e6d32c..e066d95 100644
--- a/src/rules/validation/abstract/base/RuleBlacklistBase.sol
+++ b/src/rules/validation/abstract/base/RuleBlacklistBase.sol
@@ -15,36 +15,40 @@ import {IRule} from "RuleEngine/interfaces/IRule.sol";
* @notice Core blacklist logic without access-control policy.
*/
abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlacklistInvariantStorage {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
- function _detectTransferRestriction(
- address from,
- address to,
- uint256 /* value */
- )
- internal
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @inheritdoc IERC3643IComplianceContract
+ * @dev Validation only; does not modify state.
+ */
+ function transferred(address from, address to, uint256 value)
+ public
view
- override
- returns (uint8)
+ virtual
+ override(IERC3643IComplianceContract)
{
- if (isAddressListed(from)) {
- return CODE_ADDRESS_FROM_IS_BLACKLISTED;
- } else if (isAddressListed(to)) {
- return CODE_ADDRESS_TO_IS_BLACKLISTED;
- }
- return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ _transferred(from, to, value);
}
- function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- internal
+ /**
+ * @inheritdoc IRuleEngine
+ * @dev Validation only; does not modify state.
+ */
+ function transferred(address spender, address from, address to, uint256 value)
+ public
view
- override
- returns (uint8)
+ virtual
+ override(IRuleEngine)
{
- if (isAddressListed(spender)) {
- return CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
- }
- return _detectTransferRestriction(from, to, value);
+ _transferredFrom(spender, from, to, value);
}
function canReturnTransferRestrictionCode(uint8 restrictionCode)
@@ -80,30 +84,38 @@ abstract contract RuleBlacklistBase is RuleAddressSet, RuleNFTAdapter, RuleBlack
return RuleTransferValidation.supportsInterface(interfaceId);
}
- /**
- * @inheritdoc IERC3643IComplianceContract
- * @dev Validation only; does not modify state.
- */
- function transferred(address from, address to, uint256 value)
- public
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function _detectTransferRestriction(
+ address from,
+ address to,
+ uint256 /* value */
+ )
+ internal
view
- virtual
- override(IERC3643IComplianceContract)
+ override
+ returns (uint8)
{
- _transferred(from, to, value);
+ if (isAddressListed(from)) {
+ return CODE_ADDRESS_FROM_IS_BLACKLISTED;
+ } else if (isAddressListed(to)) {
+ return CODE_ADDRESS_TO_IS_BLACKLISTED;
+ }
+ return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
}
- /**
- * @inheritdoc IRuleEngine
- * @dev Validation only; does not modify state.
- */
- function transferred(address spender, address from, address to, uint256 value)
- public
+ function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ internal
view
- virtual
- override(IRuleEngine)
+ override
+ returns (uint8)
{
- _transferredFrom(spender, from, to, value);
+ if (isAddressListed(spender)) {
+ return CODE_ADDRESS_SPENDER_IS_BLACKLISTED;
+ }
+ return _detectTransferRestriction(from, to, value);
}
function _transferred(address from, address to, uint256 value) internal view virtual override {
diff --git a/src/rules/validation/abstract/base/RuleERC2980Base.sol b/src/rules/validation/abstract/base/RuleERC2980Base.sol
index 247e64f..1061824 100644
--- a/src/rules/validation/abstract/base/RuleERC2980Base.sol
+++ b/src/rules/validation/abstract/base/RuleERC2980Base.sol
@@ -38,121 +38,41 @@ abstract contract RuleERC2980Base is
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
- constructor(address forwarderIrrevocable) MetaTxModuleStandalone(forwarderIrrevocable) {}
-
- /*//////////////////////////////////////////////////////////////
- TRANSFER RESTRICTION LOGIC
- //////////////////////////////////////////////////////////////*/
-
- function _detectTransferRestriction(
- address from,
- address to,
- uint256 /* value */
- )
- internal
- view
- virtual
- override
- returns (uint8)
- {
- // Frozenlist check has priority
- if (_isFrozen(from)) {
- return CODE_ADDRESS_FROM_IS_FROZEN;
- } else if (_isFrozen(to)) {
- return CODE_ADDRESS_TO_IS_FROZEN;
+ constructor(address forwarderIrrevocable, bool allowBurn) MetaTxModuleStandalone(forwarderIrrevocable) {
+ if (allowBurn) {
+ _addWhitelistAddress(address(0));
+ emit AddWhitelistAddress(address(0));
}
- // Whitelist check: only the recipient must be whitelisted
- if (!_isWhitelisted(to)) {
- return CODE_ADDRESS_TO_NOT_WHITELISTED;
- }
- return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- }
-
- function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- internal
- view
- virtual
- override
- returns (uint8)
- {
- if (_isFrozen(spender)) {
- return CODE_ADDRESS_SPENDER_IS_FROZEN;
- }
- return _detectTransferRestriction(from, to, value);
}
/*//////////////////////////////////////////////////////////////
- ERC-3643 / IRuleEngine HOOKS
+ ACCESS CONTROL
//////////////////////////////////////////////////////////////*/
- function transferred(address from, address to, uint256 value)
- public
- view
- virtual
- override(IERC3643IComplianceContract)
- {
- _transferred(from, to, value);
- }
-
- function transferred(address spender, address from, address to, uint256 value)
- public
- view
- virtual
- override(IRuleEngine)
- {
- _transferredFrom(spender, from, to, value);
+ modifier onlyWhitelistAdd() {
+ _authorizeWhitelistAdd();
+ _;
}
- function _transferred(address from, address to, uint256 value) internal view virtual override {
- uint8 code = _detectTransferRestriction(from, to, value);
- require(
- code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- RuleERC2980_InvalidTransfer(address(this), from, to, value, code)
- );
+ modifier onlyWhitelistRemove() {
+ _authorizeWhitelistRemove();
+ _;
}
- function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
- uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
- require(
- code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
- RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code)
- );
+ modifier onlyFrozenlistAdd() {
+ _authorizeFrozenlistAdd();
+ _;
}
- /*//////////////////////////////////////////////////////////////
- RESTRICTION CODE HELPERS
- //////////////////////////////////////////////////////////////*/
-
- function canReturnTransferRestrictionCode(uint8 restrictionCode)
- public
- pure
- virtual
- override(IRule)
- returns (bool)
- {
- return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN
- || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED;
+ modifier onlyFrozenlistRemove() {
+ _authorizeFrozenlistRemove();
+ _;
}
- function messageForTransferRestriction(uint8 restrictionCode)
- public
- pure
- virtual
- override(IERC1404)
- returns (string memory)
- {
- if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) {
- return TEXT_ADDRESS_FROM_IS_FROZEN;
- } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) {
- return TEXT_ADDRESS_TO_IS_FROZEN;
- } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) {
- return TEXT_ADDRESS_SPENDER_IS_FROZEN;
- } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
- return TEXT_ADDRESS_TO_NOT_WHITELISTED;
- } else {
- return TEXT_CODE_NOT_FOUND;
- }
- }
+ function _authorizeWhitelistAdd() internal view virtual;
+ function _authorizeWhitelistRemove() internal view virtual;
+ function _authorizeFrozenlistAdd() internal view virtual;
+ function _authorizeFrozenlistRemove() internal view virtual;
/*//////////////////////////////////////////////////////////////
WHITELIST MANAGEMENT
@@ -204,46 +124,6 @@ abstract contract RuleERC2980Base is
emit RemoveWhitelistAddress(targetAddress);
}
- /**
- * @notice Returns the number of whitelisted addresses.
- */
- function whitelistAddressCount() public view returns (uint256) {
- return _whitelistCount();
- }
-
- /**
- * @notice Returns true if the address is in the whitelist.
- */
- function isWhitelisted(address targetAddress) public view returns (bool) {
- return _isWhitelisted(targetAddress);
- }
-
- /**
- * @notice ERC-2980 getter: returns true if the address is whitelisted.
- */
- function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) {
- return _isWhitelisted(_operator);
- }
-
- /**
- * @notice Returns true if the address is whitelisted (identity-verified).
- * @dev Reflects whitelist membership only. Frozen status is intentionally excluded:
- * freezing is a temporary enforcement action and does not revoke identity verification.
- */
- function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
- return _isWhitelisted(targetAddress);
- }
-
- /**
- * @notice Checks multiple addresses for whitelist membership.
- */
- function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) {
- results = new bool[](targetAddresses.length);
- for (uint256 i = 0; i < targetAddresses.length; ++i) {
- results[i] = _isWhitelisted(targetAddresses[i]);
- }
- }
-
/*//////////////////////////////////////////////////////////////
FROZENLIST MANAGEMENT
//////////////////////////////////////////////////////////////*/
@@ -294,6 +174,103 @@ abstract contract RuleERC2980Base is
emit RemoveFrozenlistAddress(targetAddress);
}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function transferred(address from, address to, uint256 value)
+ public
+ view
+ virtual
+ override(IERC3643IComplianceContract)
+ {
+ _transferred(from, to, value);
+ }
+
+ function transferred(address spender, address from, address to, uint256 value)
+ public
+ view
+ virtual
+ override(IRuleEngine)
+ {
+ _transferredFrom(spender, from, to, value);
+ }
+
+ function canReturnTransferRestrictionCode(uint8 restrictionCode)
+ public
+ pure
+ virtual
+ override(IRule)
+ returns (bool)
+ {
+ return restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_IS_FROZEN
+ || restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN || restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED;
+ }
+
+ function messageForTransferRestriction(uint8 restrictionCode)
+ public
+ pure
+ virtual
+ override(IERC1404)
+ returns (string memory)
+ {
+ if (restrictionCode == CODE_ADDRESS_FROM_IS_FROZEN) {
+ return TEXT_ADDRESS_FROM_IS_FROZEN;
+ } else if (restrictionCode == CODE_ADDRESS_TO_IS_FROZEN) {
+ return TEXT_ADDRESS_TO_IS_FROZEN;
+ } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_FROZEN) {
+ return TEXT_ADDRESS_SPENDER_IS_FROZEN;
+ } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
+ return TEXT_ADDRESS_TO_NOT_WHITELISTED;
+ } else {
+ return TEXT_CODE_NOT_FOUND;
+ }
+ }
+
+ function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
+ return RuleTransferValidation.supportsInterface(interfaceId);
+ }
+
+ /**
+ * @notice Returns the number of whitelisted addresses.
+ */
+ function whitelistAddressCount() public view returns (uint256) {
+ return _whitelistCount();
+ }
+
+ /**
+ * @notice Returns true if the address is in the whitelist.
+ */
+ function isWhitelisted(address targetAddress) public view returns (bool) {
+ return _isWhitelisted(targetAddress);
+ }
+
+ /**
+ * @notice ERC-2980 getter: returns true if the address is whitelisted.
+ */
+ function whitelist(address _operator) public view virtual override(IERC2980) returns (bool) {
+ return _isWhitelisted(_operator);
+ }
+
+ /**
+ * @notice Returns true if the address is whitelisted (identity-verified).
+ * @dev Reflects whitelist membership only. Frozen status is intentionally excluded:
+ * freezing is a temporary enforcement action and does not revoke identity verification.
+ */
+ function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
+ return _isWhitelisted(targetAddress);
+ }
+
+ /**
+ * @notice Checks multiple addresses for whitelist membership.
+ */
+ function areWhitelisted(address[] memory targetAddresses) public view returns (bool[] memory results) {
+ results = new bool[](targetAddresses.length);
+ for (uint256 i = 0; i < targetAddresses.length; ++i) {
+ results[i] = _isWhitelisted(targetAddresses[i]);
+ }
+ }
+
/**
* @notice Returns the number of frozen addresses.
*/
@@ -326,46 +303,62 @@ abstract contract RuleERC2980Base is
}
/*//////////////////////////////////////////////////////////////
- INTERFACE SUPPORT
- //////////////////////////////////////////////////////////////*/
-
- function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
- return RuleTransferValidation.supportsInterface(interfaceId);
- }
-
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
- modifier onlyWhitelistAdd() {
- _authorizeWhitelistAdd();
- _;
+ function _detectTransferRestriction(
+ address from,
+ address to,
+ uint256 /* value */
+ )
+ internal
+ view
+ virtual
+ override
+ returns (uint8)
+ {
+ // Frozenlist check has priority
+ if (_isFrozen(from)) {
+ return CODE_ADDRESS_FROM_IS_FROZEN;
+ } else if (_isFrozen(to)) {
+ return CODE_ADDRESS_TO_IS_FROZEN;
+ }
+ // Whitelist check: only the recipient must be whitelisted
+ if (!_isWhitelisted(to)) {
+ return CODE_ADDRESS_TO_NOT_WHITELISTED;
+ }
+ return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
}
- modifier onlyWhitelistRemove() {
- _authorizeWhitelistRemove();
- _;
+ function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ internal
+ view
+ virtual
+ override
+ returns (uint8)
+ {
+ if (_isFrozen(spender)) {
+ return CODE_ADDRESS_SPENDER_IS_FROZEN;
+ }
+ return _detectTransferRestriction(from, to, value);
}
- modifier onlyFrozenlistAdd() {
- _authorizeFrozenlistAdd();
- _;
+ function _transferred(address from, address to, uint256 value) internal view virtual override {
+ uint8 code = _detectTransferRestriction(from, to, value);
+ require(
+ code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ RuleERC2980_InvalidTransfer(address(this), from, to, value, code)
+ );
}
- modifier onlyFrozenlistRemove() {
- _authorizeFrozenlistRemove();
- _;
+ function _transferredFrom(address spender, address from, address to, uint256 value) internal view virtual override {
+ uint8 code = _detectTransferRestrictionFrom(spender, from, to, value);
+ require(
+ code == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK),
+ RuleERC2980_InvalidTransferFrom(address(this), spender, from, to, value, code)
+ );
}
- function _authorizeWhitelistAdd() internal view virtual;
- function _authorizeWhitelistRemove() internal view virtual;
- function _authorizeFrozenlistAdd() internal view virtual;
- function _authorizeFrozenlistRemove() internal view virtual;
-
- /*//////////////////////////////////////////////////////////////
- ERC-2771 META TX
- //////////////////////////////////////////////////////////////*/
-
function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
return ERC2771Context._msgSender();
}
diff --git a/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol b/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol
index 31d400d..cbb2b95 100644
--- a/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol
+++ b/src/rules/validation/abstract/base/RuleIdentityRegistryBase.sol
@@ -16,12 +16,40 @@ import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.s
abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegistryInvariantStorage {
IIdentityRegistryVerified public identityRegistry;
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address identityRegistry_) {
if (identityRegistry_ != address(0)) {
identityRegistry = IIdentityRegistryVerified(identityRegistry_);
}
}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyIdentityRegistryManager() {
+ _authorizeIdentityRegistryManager();
+ _;
+ }
+
+ function _authorizeIdentityRegistryManager() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+ return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED
+ || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setIdentityRegistry(address newRegistry) public onlyIdentityRegistryManager {
require(newRegistry != address(0), RuleIdentityRegistry_RegistryAddressZeroNotAllowed());
identityRegistry = IIdentityRegistryVerified(newRegistry);
@@ -33,6 +61,34 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist
emit IdentityRegistryUpdated(address(0));
}
+ function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ _transferred(from, to, value);
+ }
+
+ function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ _transferredFrom(spender, from, to, value);
+ }
+
+ function messageForTransferRestriction(uint8 restrictionCode)
+ public
+ pure
+ override(IERC1404)
+ returns (string memory)
+ {
+ if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) {
+ return TEXT_ADDRESS_FROM_NOT_VERIFIED;
+ } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) {
+ return TEXT_ADDRESS_TO_NOT_VERIFIED;
+ } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) {
+ return TEXT_ADDRESS_SPENDER_NOT_VERIFIED;
+ }
+ return TEXT_CODE_NOT_FOUND;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _detectTransferRestriction(
address from,
address to,
@@ -77,14 +133,6 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist
return _detectTransferRestriction(from, to, value);
}
- function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- _transferred(from, to, value);
- }
-
- function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- _transferredFrom(spender, from, to, value);
- }
-
function _transferred(address from, address to, uint256 value) internal view virtual override {
uint8 code = _detectTransferRestriction(from, to, value);
require(
@@ -101,35 +149,4 @@ abstract contract RuleIdentityRegistryBase is RuleNFTAdapter, RuleIdentityRegist
);
}
- function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
- return restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED || restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED
- || restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED;
- }
-
- function messageForTransferRestriction(uint8 restrictionCode)
- public
- pure
- override(IERC1404)
- returns (string memory)
- {
- if (restrictionCode == CODE_ADDRESS_FROM_NOT_VERIFIED) {
- return TEXT_ADDRESS_FROM_NOT_VERIFIED;
- } else if (restrictionCode == CODE_ADDRESS_TO_NOT_VERIFIED) {
- return TEXT_ADDRESS_TO_NOT_VERIFIED;
- } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_VERIFIED) {
- return TEXT_ADDRESS_SPENDER_NOT_VERIFIED;
- }
- return TEXT_CODE_NOT_FOUND;
- }
-
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlyIdentityRegistryManager() {
- _authorizeIdentityRegistryManager();
- _;
- }
-
- function _authorizeIdentityRegistryManager() internal view virtual;
}
diff --git a/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol b/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol
index 55e07cd..8aebb27 100644
--- a/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol
+++ b/src/rules/validation/abstract/base/RuleMaxTotalSupplyBase.sol
@@ -17,12 +17,28 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal
ITotalSupply public tokenContract;
uint256 public maxTotalSupply;
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address tokenContract_, uint256 maxTotalSupply_) {
require(tokenContract_ != address(0), RuleMaxTotalSupply_TokenAddressZeroNotAllowed());
tokenContract = ITotalSupply(tokenContract_);
maxTotalSupply = maxTotalSupply_;
}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
+ return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function setMaxTotalSupply(uint256 newMaxTotalSupply) public onlyMaxTotalSupplyManager {
maxTotalSupply = newMaxTotalSupply;
emit MaxTotalSupplyUpdated(newMaxTotalSupply);
@@ -34,6 +50,41 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal
emit TokenContractUpdated(newTokenContract);
}
+ function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ _transferred(from, to, value);
+ }
+
+ function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ _transferredFrom(spender, from, to, value);
+ }
+
+ function messageForTransferRestriction(uint8 restrictionCode)
+ public
+ pure
+ override(IERC1404)
+ returns (string memory)
+ {
+ if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) {
+ return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED;
+ }
+ return TEXT_CODE_NOT_FOUND;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyMaxTotalSupplyManager() {
+ _authorizeMaxTotalSupplyManager();
+ _;
+ }
+
+ function _authorizeMaxTotalSupplyManager() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _detectTransferRestriction(
address from,
address,
@@ -63,14 +114,6 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal
return _detectTransferRestriction(from, to, value);
}
- function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- _transferred(from, to, value);
- }
-
- function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- _transferredFrom(spender, from, to, value);
- }
-
function _transferred(address from, address to, uint256 value) internal view virtual {
uint8 code = _detectTransferRestriction(from, to, value);
require(
@@ -86,31 +129,4 @@ abstract contract RuleMaxTotalSupplyBase is RuleTransferValidation, RuleMaxTotal
RuleMaxTotalSupply_InvalidTransferFrom(address(this), spender, from, to, value, code)
);
}
-
- function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
- return restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED;
- }
-
- function messageForTransferRestriction(uint8 restrictionCode)
- public
- pure
- override(IERC1404)
- returns (string memory)
- {
- if (restrictionCode == CODE_MAX_TOTAL_SUPPLY_EXCEEDED) {
- return TEXT_MAX_TOTAL_SUPPLY_EXCEEDED;
- }
- return TEXT_CODE_NOT_FOUND;
- }
-
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlyMaxTotalSupplyManager() {
- _authorizeMaxTotalSupplyManager();
- _;
- }
-
- function _authorizeMaxTotalSupplyManager() internal view virtual;
}
diff --git a/src/rules/validation/abstract/base/RuleSanctionsListBase.sol b/src/rules/validation/abstract/base/RuleSanctionsListBase.sol
index 66ddb78..586b949 100644
--- a/src/rules/validation/abstract/base/RuleSanctionsListBase.sol
+++ b/src/rules/validation/abstract/base/RuleSanctionsListBase.sol
@@ -17,6 +17,10 @@ import {IRule} from "RuleEngine/interfaces/IRule.sol";
abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapter, RuleSanctionsListInvariantStorage {
ISanctionsList public sanctionsList;
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
MetaTxModuleStandalone(forwarderIrrevocable)
{
@@ -25,6 +29,67 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte
}
}
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
+ return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED
+ || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager {
+ require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed());
+ _setSanctionListOracle(sanctionContractOracle_);
+ }
+
+ function clearSanctionListOracle() public virtual onlySanctionListManager {
+ _setSanctionListOracle(ISanctionsList(address(0)));
+ }
+
+ function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
+ _transferred(from, to, value);
+ }
+
+ function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ _transferredFrom(spender, from, to, value);
+ }
+
+ function messageForTransferRestriction(uint8 restrictionCode)
+ public
+ pure
+ override(IERC1404)
+ returns (string memory)
+ {
+ if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) {
+ return TEXT_ADDRESS_FROM_IS_SANCTIONED;
+ } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) {
+ return TEXT_ADDRESS_TO_IS_SANCTIONED;
+ } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) {
+ return TEXT_ADDRESS_SPENDER_IS_SANCTIONED;
+ }
+ return TEXT_CODE_NOT_FOUND;
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlySanctionListManager() {
+ _authorizeSanctionListManager();
+ _;
+ }
+
+ function _authorizeSanctionListManager() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _detectTransferRestriction(
address from,
address to,
@@ -61,44 +126,6 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte
return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
}
- function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override(IRule) returns (bool) {
- return restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED
- || restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED;
- }
-
- function messageForTransferRestriction(uint8 restrictionCode)
- public
- pure
- override(IERC1404)
- returns (string memory)
- {
- if (restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) {
- return TEXT_ADDRESS_FROM_IS_SANCTIONED;
- } else if (restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) {
- return TEXT_ADDRESS_TO_IS_SANCTIONED;
- } else if (restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) {
- return TEXT_ADDRESS_SPENDER_IS_SANCTIONED;
- }
- return TEXT_CODE_NOT_FOUND;
- }
-
- function setSanctionListOracle(ISanctionsList sanctionContractOracle_) public virtual onlySanctionListManager {
- require(address(sanctionContractOracle_) != address(0), RuleSanctionsList_OracleAddressZeroNotAllowed());
- _setSanctionListOracle(sanctionContractOracle_);
- }
-
- function clearSanctionListOracle() public virtual onlySanctionListManager {
- _setSanctionListOracle(ISanctionsList(address(0)));
- }
-
- function transferred(address from, address to, uint256 value) public view override(IERC3643IComplianceContract) {
- _transferred(from, to, value);
- }
-
- function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- _transferredFrom(spender, from, to, value);
- }
-
function _transferred(address from, address to, uint256 value) internal view virtual override {
uint8 code = _detectTransferRestriction(from, to, value);
require(
@@ -119,15 +146,4 @@ abstract contract RuleSanctionsListBase is MetaTxModuleStandalone, RuleNFTAdapte
sanctionsList = sanctionContractOracle_;
emit SetSanctionListOracle(sanctionContractOracle_);
}
-
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlySanctionListManager() {
- _authorizeSanctionListManager();
- _;
- }
-
- function _authorizeSanctionListManager() internal view virtual;
}
diff --git a/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol
index 578e946..cb37bdd 100644
--- a/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol
+++ b/src/rules/validation/abstract/base/RuleSpenderWhitelistBase.sol
@@ -14,29 +14,33 @@ import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol";
* @dev Direct transfers (`transferred(from,to,value)`) are intentionally no-op.
*/
abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, RuleSpenderWhitelistInvariantStorage {
- constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
- function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) {
- return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- }
+ constructor(address forwarderIrrevocable) RuleAddressSet(forwarderIrrevocable) {}
- function _detectTransferRestrictionFrom(address spender, address, address, uint256)
- internal
- view
- virtual
- override
- returns (uint8)
- {
- if (spender != address(0) && !_isAddressListed(spender)) {
- return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
- }
- return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
- }
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
function canReturnTransferRestrictionCode(uint8 restrictionCode) external pure override returns (bool) {
return restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @dev Regular transfers are always accepted by this rule.
+ */
+ function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
+
+ function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
+ _transferredFrom(spender, from, to, value);
+ }
+
function messageForTransferRestriction(uint8 restrictionCode)
public
pure
@@ -49,13 +53,25 @@ abstract contract RuleSpenderWhitelistBase is RuleAddressSet, RuleNFTAdapter, Ru
return TEXT_CODE_NOT_FOUND;
}
- /**
- * @dev Regular transfers are always accepted by this rule.
- */
- function transferred(address, address, uint256) public view override(IERC3643IComplianceContract) {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
- function transferred(address spender, address from, address to, uint256 value) public view override(IRuleEngine) {
- _transferredFrom(spender, from, to, value);
+ function _detectTransferRestriction(address, address, uint256) internal pure virtual override returns (uint8) {
+ return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+ }
+
+ function _detectTransferRestrictionFrom(address spender, address, address, uint256)
+ internal
+ view
+ virtual
+ override
+ returns (uint8)
+ {
+ if (spender != address(0) && !_isAddressListed(spender)) {
+ return CODE_ADDRESS_SPENDER_NOT_WHITELISTED;
+ }
+ return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
}
function _transferred(address, address, uint256) internal view virtual override {
diff --git a/src/rules/validation/abstract/base/RuleWhitelistBase.sol b/src/rules/validation/abstract/base/RuleWhitelistBase.sol
index 570f6a9..6cdb6cd 100644
--- a/src/rules/validation/abstract/base/RuleWhitelistBase.sol
+++ b/src/rules/validation/abstract/base/RuleWhitelistBase.sol
@@ -11,10 +11,58 @@ import {IIdentityRegistryVerified} from "../../../interfaces/IIdentityRegistry.s
* @notice Core whitelist logic without access-control policy.
*/
abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIdentityRegistryVerified {
- constructor(address forwarderIrrevocable, bool checkSpender_) RuleAddressSet(forwarderIrrevocable) {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ constructor(address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ RuleAddressSet(forwarderIrrevocable)
+ {
checkSpender = checkSpender_;
+ if (allowMintBurn) {
+ _addAddress(address(0));
+ emit AddAddress(address(0));
+ }
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
+ _setCheckSpender(value);
+ emit CheckSpenderUpdated(value);
+ }
+
+ function isVerified(address targetAddress)
+ public
+ view
+ virtual
+ override(IIdentityRegistryVerified)
+ returns (bool isListed)
+ {
+ isListed = _isAddressListed(targetAddress);
+ }
+
+ function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
+ return RuleTransferValidation.supportsInterface(interfaceId);
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyCheckSpenderManager() {
+ _authorizeCheckSpenderManager();
+ _;
}
+ function _authorizeCheckSpenderManager() internal view virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _detectTransferRestriction(
address from,
address to,
@@ -47,37 +95,7 @@ abstract contract RuleWhitelistBase is RuleAddressSet, RuleWhitelistShared, IIde
return _detectTransferRestriction(from, to, value);
}
- function isVerified(address targetAddress)
- public
- view
- virtual
- override(IIdentityRegistryVerified)
- returns (bool isListed)
- {
- isListed = _isAddressListed(targetAddress);
- }
-
- function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
- _setCheckSpender(value);
- emit CheckSpenderUpdated(value);
- }
-
function _setCheckSpender(bool value) internal virtual {
checkSpender = value;
}
-
- function supportsInterface(bytes4 interfaceId) public view virtual override(RuleTransferValidation) returns (bool) {
- return RuleTransferValidation.supportsInterface(interfaceId);
- }
-
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlyCheckSpenderManager() {
- _authorizeCheckSpenderManager();
- _;
- }
-
- function _authorizeCheckSpenderManager() internal view virtual;
}
diff --git a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol
index f522e3a..0e3d188 100644
--- a/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol
+++ b/src/rules/validation/abstract/base/RuleWhitelistWrapperBase.sol
@@ -2,11 +2,8 @@
pragma solidity ^0.8.20;
-/* ==== OpenZeppelin === */
-import {AccessControl} from "OZ/access/AccessControl.sol";
/* ==== Abstract contracts === */
import {MetaTxModuleStandalone, ERC2771Context} from "../../../../modules/MetaTxModuleStandalone.sol";
-import {Context} from "OZ/utils/Context.sol";
import {RuleWhitelistShared} from "../core/RuleWhitelistShared.sol";
import {RuleTransferValidation} from "../core/RuleTransferValidation.sol";
/* ==== RuleEngine === */
@@ -35,7 +32,59 @@ abstract contract RuleWhitelistWrapperBase is
checkSpender = checkSpender_;
}
- /* ============ View Functions ============ */
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
+ modifier onlyCheckSpenderManager() {
+ _authorizeCheckSpenderManager();
+ _;
+ }
+
+ function _authorizeCheckSpenderManager() internal virtual;
+
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @notice Sets whether the rule should enforce spender-based checks.
+ * @dev
+ * - Restricted to holders of the manager role.
+ * - Updates the internal `checkSpender` flag.
+ * - Emits a {CheckSpenderUpdated} event.
+ * @param value The new state of the `checkSpender` flag.
+ */
+ function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
+ _setCheckSpender(value);
+ emit CheckSpenderUpdated(value);
+ }
+
+ function supportsInterface(bytes4 interfaceId)
+ public
+ view
+ virtual
+ override(RuleTransferValidation)
+ returns (bool)
+ {
+ return RuleTransferValidation.supportsInterface(interfaceId);
+ }
+
+ /**
+ * @notice Returns true if the address is listed in at least one child whitelist rule.
+ * @dev Delegates to the same child-rule scan used by transfer restriction checks.
+ */
+ function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
+ address[] memory targets = new address[](1);
+ targets[0] = targetAddress;
+ bool[] memory result = _detectTransferRestrictionForTargets(targets);
+ return result[0];
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
/**
* @notice Go through all the whitelist rules to know if a restriction exists on the transfer
* @param from the origin address
@@ -99,42 +148,6 @@ abstract contract RuleWhitelistWrapperBase is
// ERC-7943 tokenId overloads are provided by {RuleNFTAdapter} via RuleWhitelistShared.
- function supportsInterface(bytes4 interfaceId)
- public
- view
- virtual
- override(AccessControl, RuleTransferValidation)
- returns (bool)
- {
- return AccessControl.supportsInterface(interfaceId) || RuleTransferValidation.supportsInterface(interfaceId);
- }
-
- /**
- * @notice Returns true if the address is listed in at least one child whitelist rule.
- * @dev Delegates to the same child-rule scan used by transfer restriction checks.
- */
- function isVerified(address targetAddress) public view virtual override(IIdentityRegistryVerified) returns (bool) {
- address[] memory targets = new address[](1);
- targets[0] = targetAddress;
- bool[] memory result = _detectTransferRestrictionForTargets(targets);
- return result[0];
- }
-
- /* ============ Access control ============ */
-
- /**
- * @notice Sets whether the rule should enforce spender-based checks.
- * @dev
- * - Restricted to holders of the manager role.
- * - Updates the internal `checkSpender` flag.
- * - Emits a {CheckSpenderUpdated} event.
- * @param value The new state of the `checkSpender` flag.
- */
- function setCheckSpender(bool value) public virtual onlyCheckSpenderManager {
- _setCheckSpender(value);
- emit CheckSpenderUpdated(value);
- }
-
function _transferred(address from, address to, uint256 value)
internal
view
@@ -153,10 +166,6 @@ abstract contract RuleWhitelistWrapperBase is
RuleWhitelistShared._transferredFrom(spender, from, to, value);
}
- /*//////////////////////////////////////////////////////////////
- INTERNAL/PRIVATE FUNCTIONS
- //////////////////////////////////////////////////////////////*/
-
/**
* @notice Evaluates target addresses across all child rules.
* @param targetAddress Addresses to validate (from/to[/spender]).
@@ -203,17 +212,6 @@ abstract contract RuleWhitelistWrapperBase is
checkSpender = value;
}
- /*//////////////////////////////////////////////////////////////
- ACCESS CONTROL
- //////////////////////////////////////////////////////////////*/
-
- modifier onlyCheckSpenderManager() {
- _authorizeCheckSpenderManager();
- _;
- }
-
- function _authorizeCheckSpenderManager() internal virtual;
-
/*//////////////////////////////////////////////////////////////
ERC-2771
//////////////////////////////////////////////////////////////*/
@@ -221,21 +219,21 @@ abstract contract RuleWhitelistWrapperBase is
/**
* @dev This surcharge is not necessary if you do not use the MetaTxModule
*/
- function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
+ function _msgSender() internal view virtual override(ERC2771Context) returns (address sender) {
return ERC2771Context._msgSender();
}
/**
* @dev This surcharge is not necessary if you do not use the MetaTxModule
*/
- function _msgData() internal view virtual override(ERC2771Context, Context) returns (bytes calldata) {
+ function _msgData() internal view virtual override(ERC2771Context) returns (bytes calldata) {
return ERC2771Context._msgData();
}
/**
* @dev This surcharge is not necessary if you do not use the MetaTxModule
*/
- function _contextSuffixLength() internal view virtual override(ERC2771Context, Context) returns (uint256) {
+ function _contextSuffixLength() internal view virtual override(ERC2771Context) returns (uint256) {
return ERC2771Context._contextSuffixLength();
}
}
diff --git a/src/rules/validation/abstract/core/RuleNFTAdapter.sol b/src/rules/validation/abstract/core/RuleNFTAdapter.sol
index c9f50a8..db03caa 100644
--- a/src/rules/validation/abstract/core/RuleNFTAdapter.sol
+++ b/src/rules/validation/abstract/core/RuleNFTAdapter.sol
@@ -23,15 +23,10 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC
bytes4(keccak256("transferred(address,address,uint256,uint256)"));
bytes4 internal constant TRANSFERRED_SELECTOR_ERC7943_FROM =
bytes4(keccak256("transferred(address,address,address,uint256,uint256)"));
- /**
- * @notice Internal hook for post-transfer validation or state updates.
- */
- function _transferred(address from, address to, uint256 value) internal virtual;
- /**
- * @notice Internal hook for post-transfer validation or state updates (spender-aware).
- */
- function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual;
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/**
* @inheritdoc IERC7943NonFungibleComplianceExtend
@@ -161,4 +156,18 @@ abstract contract RuleNFTAdapter is RuleTransferValidation, IERC7943NonFungibleC
_transferred(ctx.from, ctx.to, ctx.value);
}
}
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @notice Internal hook for post-transfer validation or state updates.
+ */
+ function _transferred(address from, address to, uint256 value) internal virtual;
+
+ /**
+ * @notice Internal hook for post-transfer validation or state updates (spender-aware).
+ */
+ function _transferredFrom(address spender, address from, address to, uint256 value) internal virtual;
}
diff --git a/src/rules/validation/abstract/core/RuleTransferValidation.sol b/src/rules/validation/abstract/core/RuleTransferValidation.sol
index d120135..ed0fa18 100644
--- a/src/rules/validation/abstract/core/RuleTransferValidation.sol
+++ b/src/rules/validation/abstract/core/RuleTransferValidation.sol
@@ -4,11 +4,14 @@ pragma solidity ^0.8.20;
/* ==== CMTAT === */
import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
-import {IERC3643ComplianceRead} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
+import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
/* ==== RuleEngine === */
import {IRule} from "RuleEngine/interfaces/IRule.sol";
import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+/* ==== CMTAT libraries === */
+import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
/* ==== Modules === */
import {VersionModule} from "../../../../modules/VersionModule.sol";
@@ -19,32 +22,9 @@ abstract contract RuleTransferValidation is
IERC7551Compliance,
IRule
{
- /**
- * @notice Internal transfer restriction check.
- * @param from the origin address
- * @param to the destination address
- * @param value amount to transfer
- * @return restrictionCode The restriction code for this rule.
- */
- function _detectTransferRestriction(address from, address to, uint256 value)
- internal
- view
- virtual
- returns (uint8 restrictionCode);
-
- /**
- * @notice Internal transfer restriction check for spender-initiated transfers.
- * @param spender the caller executing the transfer
- * @param from the origin address
- * @param to the destination address
- * @param value amount to transfer
- * @return restrictionCode The restriction code for this rule.
- */
- function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
- internal
- view
- virtual
- returns (uint8 restrictionCode);
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/**
* @inheritdoc IERC1404
@@ -104,6 +84,41 @@ abstract contract RuleTransferValidation is
}
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
- return interfaceId == type(IRule).interfaceId || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID;
+ return interfaceId == RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID
+ || interfaceId == ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID
+ || interfaceId == RuleInterfaceId.IRULE_INTERFACE_ID
+ || interfaceId == type(IERC7551Compliance).interfaceId
+ || interfaceId == type(IERC3643IComplianceContract).interfaceId;
}
+
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @notice Internal transfer restriction check.
+ * @param from the origin address
+ * @param to the destination address
+ * @param value amount to transfer
+ * @return restrictionCode The restriction code for this rule.
+ */
+ function _detectTransferRestriction(address from, address to, uint256 value)
+ internal
+ view
+ virtual
+ returns (uint8 restrictionCode);
+
+ /**
+ * @notice Internal transfer restriction check for spender-initiated transfers.
+ * @param spender the caller executing the transfer
+ * @param from the origin address
+ * @param to the destination address
+ * @param value amount to transfer
+ * @return restrictionCode The restriction code for this rule.
+ */
+ function _detectTransferRestrictionFrom(address spender, address from, address to, uint256 value)
+ internal
+ view
+ virtual
+ returns (uint8 restrictionCode);
}
diff --git a/src/rules/validation/abstract/core/RuleWhitelistShared.sol b/src/rules/validation/abstract/core/RuleWhitelistShared.sol
index 73d819a..b53fbad 100644
--- a/src/rules/validation/abstract/core/RuleWhitelistShared.sol
+++ b/src/rules/validation/abstract/core/RuleWhitelistShared.sol
@@ -22,7 +22,10 @@ abstract contract RuleWhitelistShared is RuleNFTAdapter, RuleWhitelistInvariantS
*/
bool public checkSpender;
- /* ============ View Functions ============ */
+ /*//////////////////////////////////////////////////////////////
+ EXTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
/**
* @notice Checks whether a restriction code is recognized by this rule.
* @dev
@@ -60,7 +63,9 @@ abstract contract RuleWhitelistShared is RuleNFTAdapter, RuleWhitelistInvariantS
}
}
- /* ============ State Functions ============ */
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/**
* @notice ERC-3643 hook called when a transfer occurs.
@@ -92,6 +97,10 @@ abstract contract RuleWhitelistShared is RuleNFTAdapter, RuleWhitelistInvariantS
_transferredFrom(spender, from, to, value);
}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _transferred(address from, address to, uint256 value) internal view virtual override {
uint8 code = _detectTransferRestriction(from, to, value);
require(
diff --git a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol
index 5b6833e..e6adfd1 100644
--- a/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol
+++ b/src/rules/validation/abstract/invariant/RuleIdentityRegistryInvariantStorage.sol
@@ -4,12 +4,6 @@ pragma solidity ^0.8.20;
import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol";
abstract contract RuleIdentityRegistryInvariantStorage is RuleSharedInvariantStorage {
- error RuleIdentityRegistry_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleIdentityRegistry_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
- error RuleIdentityRegistry_RegistryAddressZeroNotAllowed();
-
string constant TEXT_ADDRESS_FROM_NOT_VERIFIED = "The sender is not verified";
string constant TEXT_ADDRESS_TO_NOT_VERIFIED = "The recipient is not verified";
string constant TEXT_ADDRESS_SPENDER_NOT_VERIFIED = "The spender is not verified";
@@ -20,4 +14,10 @@ abstract contract RuleIdentityRegistryInvariantStorage is RuleSharedInvariantSto
uint8 public constant CODE_ADDRESS_SPENDER_NOT_VERIFIED = 57;
event IdentityRegistryUpdated(address indexed newRegistry);
+
+ error RuleIdentityRegistry_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleIdentityRegistry_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
+ error RuleIdentityRegistry_RegistryAddressZeroNotAllowed();
}
diff --git a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol
index ad3d3bd..310a1c5 100644
--- a/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol
+++ b/src/rules/validation/abstract/invariant/RuleMaxTotalSupplyInvariantStorage.sol
@@ -4,12 +4,6 @@ pragma solidity ^0.8.20;
import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol";
abstract contract RuleMaxTotalSupplyInvariantStorage is RuleSharedInvariantStorage {
- error RuleMaxTotalSupply_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleMaxTotalSupply_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
- error RuleMaxTotalSupply_TokenAddressZeroNotAllowed();
-
string constant TEXT_MAX_TOTAL_SUPPLY_EXCEEDED = "Max total supply exceeded";
// It is very important that each rule uses an unique code
@@ -17,4 +11,10 @@ abstract contract RuleMaxTotalSupplyInvariantStorage is RuleSharedInvariantStora
event MaxTotalSupplyUpdated(uint256 newMaxTotalSupply);
event TokenContractUpdated(address indexed newTokenContract);
+
+ error RuleMaxTotalSupply_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleMaxTotalSupply_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
+ error RuleMaxTotalSupply_TokenAddressZeroNotAllowed();
}
diff --git a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol
index 27d3c95..10d8f06 100644
--- a/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol
+++ b/src/rules/validation/abstract/invariant/RuleSanctionsListInvariantStorage.sol
@@ -6,14 +6,6 @@ import {RuleSharedInvariantStorage} from "./RuleSharedInvariantStorage.sol";
import {ISanctionsList} from "../../../interfaces/ISanctionsList.sol";
abstract contract RuleSanctionsListInvariantStorage is RuleSharedInvariantStorage {
- /* ============ Event ============ */
- event SetSanctionListOracle(ISanctionsList newOracle);
- /* ============ Custom errors ============ */
- error RuleSanctionsList_OracleAddressZeroNotAllowed();
- error RuleSanctionsList_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
- error RuleSanctionsList_InvalidTransferFrom(
- address rule, address spender, address from, address to, uint256 value, uint8 code
- );
/* ============ Role ============ */
bytes32 public constant SANCTIONLIST_ROLE = keccak256("SANCTIONLIST_ROLE");
@@ -27,4 +19,14 @@ abstract contract RuleSanctionsListInvariantStorage is RuleSharedInvariantStorag
uint8 public constant CODE_ADDRESS_FROM_IS_SANCTIONED = 30;
uint8 public constant CODE_ADDRESS_TO_IS_SANCTIONED = 31;
uint8 public constant CODE_ADDRESS_SPENDER_IS_SANCTIONED = 32;
+
+ /* ============ Event ============ */
+ event SetSanctionListOracle(ISanctionsList newOracle);
+
+ /* ============ Custom errors ============ */
+ error RuleSanctionsList_OracleAddressZeroNotAllowed();
+ error RuleSanctionsList_InvalidTransfer(address rule, address from, address to, uint256 value, uint8 code);
+ error RuleSanctionsList_InvalidTransferFrom(
+ address rule, address spender, address from, address to, uint256 value, uint8 code
+ );
}
diff --git a/src/rules/validation/deployment/RuleBlacklist.sol b/src/rules/validation/deployment/RuleBlacklist.sol
index 6c4d20d..421abbc 100644
--- a/src/rules/validation/deployment/RuleBlacklist.sol
+++ b/src/rules/validation/deployment/RuleBlacklist.sol
@@ -2,8 +2,8 @@
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
/* ==== Abstract contracts === */
import {RuleBlacklistBase} from "../abstract/base/RuleBlacklistBase.sol";
@@ -25,6 +25,10 @@ contract RuleBlacklist is RuleBlacklistBase, AccessControlModuleStandalone {
AccessControlModuleStandalone(admin)
{}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
@@ -36,10 +40,18 @@ contract RuleBlacklist is RuleBlacklistBase, AccessControlModuleStandalone {
|| RuleBlacklistBase.supportsInterface(interfaceId);
}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol b/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol
index ac2cea9..f299e82 100644
--- a/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleBlacklistOwnable2Step.sol
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {RuleBlacklistBase} from "../abstract/base/RuleBlacklistBase.sol";
import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
@@ -12,12 +12,24 @@ import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
* @notice Ownable2Step variant of RuleBlacklist with owner-based authorization hooks.
*/
contract RuleBlacklistOwnable2Step is RuleBlacklistBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable) RuleBlacklistBase(forwarderIrrevocable) Ownable(owner) {}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleERC2980.sol b/src/rules/validation/deployment/RuleERC2980.sol
index 1ae4077..a8cbe33 100644
--- a/src/rules/validation/deployment/RuleERC2980.sol
+++ b/src/rules/validation/deployment/RuleERC2980.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
/* ==== Abstract contracts === */
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol";
@@ -37,14 +37,15 @@ contract RuleERC2980 is RuleERC2980Base, AccessControlModuleStandalone {
/**
* @param admin Address that receives `DEFAULT_ADMIN_ROLE` (implicitly holds all roles).
* @param forwarderIrrevocable Address of the ERC-2771 forwarder for meta-transactions.
+ * @param allowBurn If true, whitelists `address(0)` at deployment to allow burn/redemption flows.
*/
- constructor(address admin, address forwarderIrrevocable)
- RuleERC2980Base(forwarderIrrevocable)
+ constructor(address admin, address forwarderIrrevocable, bool allowBurn)
+ RuleERC2980Base(forwarderIrrevocable, allowBurn)
AccessControlModuleStandalone(admin)
{}
/*//////////////////////////////////////////////////////////////
- INTERFACE SUPPORT
+ PUBLIC FUNCTIONS
//////////////////////////////////////////////////////////////*/
function supportsInterface(bytes4 interfaceId)
@@ -69,6 +70,10 @@ contract RuleERC2980 is RuleERC2980Base, AccessControlModuleStandalone {
function _authorizeFrozenlistRemove() internal view virtual override onlyRole(FROZENLIST_REMOVE_ROLE) {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol b/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol
index 0764662..072adbe 100644
--- a/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol
+++ b/src/rules/validation/deployment/RuleERC2980Ownable2Step.sol
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol";
/**
@@ -12,7 +12,23 @@ import {RuleERC2980Base} from "../abstract/base/RuleERC2980Base.sol";
* @dev All whitelist and frozenlist management functions are restricted to the contract owner.
*/
contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step {
- constructor(address owner, address forwarderIrrevocable) RuleERC2980Base(forwarderIrrevocable) Ownable(owner) {}
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @param owner Contract owner.
+ * @param forwarderIrrevocable Address of the ERC-2771 forwarder for meta-transactions.
+ * @param allowBurn If true, whitelists `address(0)` at deployment to allow burn/redemption flows.
+ */
+ constructor(address owner, address forwarderIrrevocable, bool allowBurn)
+ RuleERC2980Base(forwarderIrrevocable, allowBurn)
+ Ownable(owner)
+ {}
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
function _authorizeWhitelistAdd() internal view virtual override onlyOwner {}
@@ -22,6 +38,10 @@ contract RuleERC2980Ownable2Step is RuleERC2980Base, Ownable2Step {
function _authorizeFrozenlistRemove() internal view virtual override onlyOwner {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleERC2980Base) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleIdentityRegistry.sol b/src/rules/validation/deployment/RuleIdentityRegistry.sol
index 440a8e2..72109f8 100644
--- a/src/rules/validation/deployment/RuleIdentityRegistry.sol
+++ b/src/rules/validation/deployment/RuleIdentityRegistry.sol
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleIdentityRegistryBase} from "../abstract/base/RuleIdentityRegistryBase.sol";
import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol";
@@ -12,11 +12,19 @@ import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.so
* @dev Burns (to == address(0)) are allowed even if the sender is not verified.
*/
contract RuleIdentityRegistry is AccessControlModuleStandalone, RuleIdentityRegistryBase {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address identityRegistry_)
AccessControlModuleStandalone(admin)
RuleIdentityRegistryBase(identityRegistry_)
{}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
diff --git a/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol b/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol
index 09d99ba..c46ff38 100644
--- a/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleIdentityRegistryOwnable2Step.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
import {RuleIdentityRegistryBase} from "../abstract/base/RuleIdentityRegistryBase.sol";
/**
@@ -10,7 +10,15 @@ import {RuleIdentityRegistryBase} from "../abstract/base/RuleIdentityRegistryBas
* @notice Ownable2Step variant of RuleIdentityRegistry.
*/
contract RuleIdentityRegistryOwnable2Step is RuleIdentityRegistryBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address identityRegistry_) RuleIdentityRegistryBase(identityRegistry_) Ownable(owner) {}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeIdentityRegistryManager() internal view virtual override onlyOwner {}
}
diff --git a/src/rules/validation/deployment/RuleMaxTotalSupply.sol b/src/rules/validation/deployment/RuleMaxTotalSupply.sol
index 797e68f..854f45d 100644
--- a/src/rules/validation/deployment/RuleMaxTotalSupply.sol
+++ b/src/rules/validation/deployment/RuleMaxTotalSupply.sol
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleMaxTotalSupplyBase} from "../abstract/base/RuleMaxTotalSupplyBase.sol";
import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.sol";
@@ -11,6 +11,10 @@ import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.so
* @notice Restricts minting so that total supply never exceeds a maximum value.
*/
contract RuleMaxTotalSupply is AccessControlModuleStandalone, RuleMaxTotalSupplyBase {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
/**
* @param admin Address that receives the default admin role.
* @param tokenContract_ Token contract that exposes totalSupply (must be non-zero).
@@ -21,6 +25,10 @@ contract RuleMaxTotalSupply is AccessControlModuleStandalone, RuleMaxTotalSupply
RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
{}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
diff --git a/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol b/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol
index 9fc5c4a..46a78d4 100644
--- a/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleMaxTotalSupplyOwnable2Step.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
import {RuleMaxTotalSupplyBase} from "../abstract/base/RuleMaxTotalSupplyBase.sol";
/**
@@ -10,10 +10,18 @@ import {RuleMaxTotalSupplyBase} from "../abstract/base/RuleMaxTotalSupplyBase.so
* @notice Ownable2Step variant of RuleMaxTotalSupply.
*/
contract RuleMaxTotalSupplyOwnable2Step is RuleMaxTotalSupplyBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address tokenContract_, uint256 maxTotalSupply_)
RuleMaxTotalSupplyBase(tokenContract_, maxTotalSupply_)
Ownable(owner)
{}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeMaxTotalSupplyManager() internal view virtual override onlyOwner {}
}
diff --git a/src/rules/validation/deployment/RuleSanctionsList.sol b/src/rules/validation/deployment/RuleSanctionsList.sol
index 165600f..73751c4 100644
--- a/src/rules/validation/deployment/RuleSanctionsList.sol
+++ b/src/rules/validation/deployment/RuleSanctionsList.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol";
import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol";
@@ -14,6 +14,10 @@ import {ISanctionsList} from "../../interfaces/ISanctionsList.sol";
* @notice Compliance rule enforcing sanctions-screening for token transfers.
*/
contract RuleSanctionsList is AccessControlModuleStandalone, RuleSanctionsListBase {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
/**
* @param admin Address of the contract (Access Control)
* @param forwarderIrrevocable Address of the forwarder, required for the gasless support
@@ -23,6 +27,10 @@ contract RuleSanctionsList is AccessControlModuleStandalone, RuleSanctionsListBa
RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
{}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
@@ -41,7 +49,7 @@ contract RuleSanctionsList is AccessControlModuleStandalone, RuleSanctionsListBa
function _authorizeSanctionListManager() internal view virtual override onlyRole(SANCTIONLIST_ROLE) {}
/*//////////////////////////////////////////////////////////////
- ERC-2771
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
diff --git a/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol b/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol
index 2f8018d..47b40fe 100644
--- a/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleSanctionsListOwnable2Step.sol
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {ERC2771Context} from "../../../modules/MetaTxModuleStandalone.sol";
import {RuleSanctionsListBase} from "../abstract/base/RuleSanctionsListBase.sol";
import {ISanctionsList} from "../../interfaces/ISanctionsList.sol";
@@ -13,13 +13,25 @@ import {ISanctionsList} from "../../interfaces/ISanctionsList.sol";
* @notice Ownable2Step variant of RuleSanctionsList.
*/
contract RuleSanctionsListOwnable2Step is RuleSanctionsListBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable, ISanctionsList sanctionContractOracle_)
RuleSanctionsListBase(forwarderIrrevocable, sanctionContractOracle_)
Ownable(owner)
{}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeSanctionListManager() internal view virtual override onlyOwner {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(ERC2771Context, Context) returns (address sender) {
return ERC2771Context._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleSpenderWhitelist.sol b/src/rules/validation/deployment/RuleSpenderWhitelist.sol
index ee1bb70..50d3bf3 100644
--- a/src/rules/validation/deployment/RuleSpenderWhitelist.sol
+++ b/src/rules/validation/deployment/RuleSpenderWhitelist.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
@@ -13,11 +13,19 @@ import {RuleTransferValidation} from "../abstract/core/RuleTransferValidation.so
* @notice AccessControlEnumerable deployment variant of spender whitelist rule.
*/
contract RuleSpenderWhitelist is RuleSpenderWhitelistBase, AccessControlModuleStandalone {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address admin, address forwarderIrrevocable)
RuleSpenderWhitelistBase(forwarderIrrevocable)
AccessControlModuleStandalone(admin)
{}
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function supportsInterface(bytes4 interfaceId)
public
view
@@ -29,10 +37,18 @@ contract RuleSpenderWhitelist is RuleSpenderWhitelistBase, AccessControlModuleSt
|| RuleTransferValidation.supportsInterface(interfaceId);
}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeAddressListAdd() internal view virtual override onlyRole(ADDRESS_LIST_ADD_ROLE) {}
function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol b/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol
index 18ab65e..f9c2de8 100644
--- a/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {RuleSpenderWhitelistBase} from "../abstract/base/RuleSpenderWhitelistBase.sol";
import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
@@ -12,15 +12,27 @@ import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
* @notice Ownable2Step deployment variant of spender whitelist rule.
*/
contract RuleSpenderWhitelistOwnable2Step is RuleSpenderWhitelistBase, Ownable2Step {
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
constructor(address owner, address forwarderIrrevocable)
RuleSpenderWhitelistBase(forwarderIrrevocable)
Ownable(owner)
{}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleWhitelist.sol b/src/rules/validation/deployment/RuleWhitelist.sol
index dc4c75e..4168280 100644
--- a/src/rules/validation/deployment/RuleWhitelist.sol
+++ b/src/rules/validation/deployment/RuleWhitelist.sol
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
/* ==== Abstract contracts === */
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol";
@@ -25,15 +25,19 @@ contract RuleWhitelist is RuleWhitelistBase, AccessControlModuleStandalone {
/**
* @param admin Address of the contract (Access Control)
* @param forwarderIrrevocable Address of the forwarder, required for the gasless support
+ * @param checkSpender_ Enables spender checks for transferFrom when true.
+ * @param allowMintBurn Pre-lists `address(0)` at deployment when true.
*/
- constructor(address admin, address forwarderIrrevocable, bool checkSpender_)
- RuleWhitelistBase(forwarderIrrevocable, checkSpender_)
+ constructor(address admin, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ RuleWhitelistBase(forwarderIrrevocable, checkSpender_, allowMintBurn)
AccessControlModuleStandalone(admin)
{
// no-op
}
- /* ============ View Functions ============ */
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/**
* @notice Indicates whether this contract supports a given interface.
@@ -61,6 +65,10 @@ contract RuleWhitelist is RuleWhitelistBase, AccessControlModuleStandalone {
function _authorizeAddressListRemove() internal view virtual override onlyRole(ADDRESS_LIST_REMOVE_ROLE) {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol b/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol
index e5cc721..d2f8aaf 100644
--- a/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleWhitelistOwnable2Step.sol
@@ -1,9 +1,9 @@
// SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
import {RuleWhitelistBase} from "../abstract/base/RuleWhitelistBase.sol";
import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
@@ -12,17 +12,35 @@ import {RuleAddressSet} from "../abstract/RuleAddressSet/RuleAddressSet.sol";
* @notice Ownable2Step variant of RuleWhitelist with owner-based authorization hooks.
*/
contract RuleWhitelistOwnable2Step is RuleWhitelistBase, Ownable2Step {
- constructor(address owner, address forwarderIrrevocable, bool checkSpender_)
- RuleWhitelistBase(forwarderIrrevocable, checkSpender_)
+ /*//////////////////////////////////////////////////////////////
+ CONSTRUCTOR
+ //////////////////////////////////////////////////////////////*/
+
+ /**
+ * @param owner Contract owner.
+ * @param forwarderIrrevocable Address of the ERC-2771 forwarder.
+ * @param checkSpender_ Enables spender checks for transferFrom when true.
+ * @param allowMintBurn Pre-lists `address(0)` at deployment when true.
+ */
+ constructor(address owner, address forwarderIrrevocable, bool checkSpender_, bool allowMintBurn)
+ RuleWhitelistBase(forwarderIrrevocable, checkSpender_, allowMintBurn)
Ownable(owner)
{}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeAddressListAdd() internal view virtual override onlyOwner {}
function _authorizeAddressListRemove() internal view virtual override onlyOwner {}
function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
+ /*//////////////////////////////////////////////////////////////
+ INTERNAL FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
+
function _msgSender() internal view virtual override(Context, RuleAddressSet) returns (address sender) {
return super._msgSender();
}
diff --git a/src/rules/validation/deployment/RuleWhitelistWrapper.sol b/src/rules/validation/deployment/RuleWhitelistWrapper.sol
index 7c4b750..99297e1 100644
--- a/src/rules/validation/deployment/RuleWhitelistWrapper.sol
+++ b/src/rules/validation/deployment/RuleWhitelistWrapper.sol
@@ -3,9 +3,8 @@
pragma solidity ^0.8.20;
/* ==== OpenZeppelin === */
-import {AccessControl} from "OZ/access/AccessControl.sol";
-import {AccessControlEnumerable} from "OZ/access/extensions/AccessControlEnumerable.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {AccessControlEnumerable} from "@openzeppelin/contracts/access/extensions/AccessControlEnumerable.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
/* ==== Abstract contracts === */
import {AccessControlModuleStandalone} from "../../../modules/AccessControlModuleStandalone.sol";
import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBase.sol";
@@ -26,7 +25,9 @@ contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleSt
AccessControlModuleStandalone(admin)
{}
- /* ============ Access control ============ */
+ /*//////////////////////////////////////////////////////////////
+ PUBLIC FUNCTIONS
+ //////////////////////////////////////////////////////////////*/
/**
* @dev Returns `true` if `account` has been granted `role`.
@@ -35,12 +36,27 @@ contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleSt
public
view
virtual
- override(AccessControl, AccessControlModuleStandalone)
+ override
returns (bool)
{
return AccessControlModuleStandalone.hasRole(role, account);
}
+ function supportsInterface(bytes4 interfaceId)
+ public
+ view
+ virtual
+ override(AccessControlEnumerable, RuleWhitelistWrapperBase)
+ returns (bool)
+ {
+ return RuleWhitelistWrapperBase.supportsInterface(interfaceId)
+ || AccessControlEnumerable.supportsInterface(interfaceId);
+ }
+
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeCheckSpenderManager() internal virtual override onlyRole(DEFAULT_ADMIN_ROLE) {}
/**
@@ -49,7 +65,7 @@ contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleSt
function _onlyRulesManager() internal virtual override onlyRole(RULES_MANAGEMENT_ROLE) {}
/*//////////////////////////////////////////////////////////////
- ERC-2771
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
@@ -70,21 +86,10 @@ contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleSt
return RuleWhitelistWrapperBase._contextSuffixLength();
}
- function supportsInterface(bytes4 interfaceId)
- public
- view
- virtual
- override(AccessControlEnumerable, RuleWhitelistWrapperBase)
- returns (bool)
- {
- return RuleWhitelistWrapperBase.supportsInterface(interfaceId)
- || AccessControlEnumerable.supportsInterface(interfaceId);
- }
-
function _grantRole(bytes32 role, address account)
internal
virtual
- override(AccessControl, AccessControlEnumerable)
+ override
returns (bool)
{
return AccessControlEnumerable._grantRole(role, account);
@@ -93,7 +98,7 @@ contract RuleWhitelistWrapper is RuleWhitelistWrapperBase, AccessControlModuleSt
function _revokeRole(bytes32 role, address account)
internal
virtual
- override(AccessControl, AccessControlEnumerable)
+ override
returns (bool)
{
return AccessControlEnumerable._revokeRole(role, account);
diff --git a/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol b/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol
index 9db5af3..d5f7bad 100644
--- a/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol
+++ b/src/rules/validation/deployment/RuleWhitelistWrapperOwnable2Step.sol
@@ -3,9 +3,9 @@
pragma solidity ^0.8.20;
/* ==== OpenZeppelin === */
-import {Ownable} from "OZ/access/Ownable.sol";
-import {Ownable2Step} from "OZ/access/Ownable2Step.sol";
-import {Context} from "OZ/utils/Context.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
+import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
+import {Context} from "@openzeppelin/contracts/utils/Context.sol";
/* ==== Abstract contracts === */
import {RuleWhitelistWrapperBase} from "../abstract/base/RuleWhitelistWrapperBase.sol";
@@ -25,6 +25,10 @@ contract RuleWhitelistWrapperOwnable2Step is RuleWhitelistWrapperBase, Ownable2S
Ownable(owner)
{}
+ /*//////////////////////////////////////////////////////////////
+ ACCESS CONTROL
+ //////////////////////////////////////////////////////////////*/
+
function _authorizeCheckSpenderManager() internal view virtual override onlyOwner {}
/**
@@ -33,7 +37,7 @@ contract RuleWhitelistWrapperOwnable2Step is RuleWhitelistWrapperBase, Ownable2S
function _onlyRulesManager() internal view virtual override onlyOwner {}
/*//////////////////////////////////////////////////////////////
- ERC-2771
+ INTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////*/
function _msgSender() internal view virtual override(RuleWhitelistWrapperBase, Context) returns (address sender) {
diff --git a/test/Coverage/DeploymentOperationCoverage.t.sol b/test/Coverage/DeploymentOperationCoverage.t.sol
index b4e692d..8eb1297 100644
--- a/test/Coverage/DeploymentOperationCoverage.t.sol
+++ b/test/Coverage/DeploymentOperationCoverage.t.sol
@@ -3,9 +3,12 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
-import {IERC165} from "OZ/utils/introspection/IERC165.sol";
-import {IRule} from "RuleEngine/interfaces/IRule.sol";
+import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
+import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol";
+import {IERC3643ComplianceFull} from "src/mocks/IERC3643ComplianceFull.sol";
import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol";
import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol";
import {
@@ -26,20 +29,20 @@ import {
contract DeploymentCoverageExtraTest is Test, HelperContract {
function testDeploymentWrappersAndHooksCoverage() public {
RuleBlacklistHarness blacklist = new RuleBlacklistHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
- RuleWhitelistHarness whitelist = new RuleWhitelistHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ RuleWhitelistHarness whitelist = new RuleWhitelistHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
RuleWhitelistWrapperHarness wrapper = new RuleWhitelistWrapperHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
- RuleERC2980Harness erc2980 = new RuleERC2980Harness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
+ RuleERC2980Harness erc2980 = new RuleERC2980Harness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
RuleSanctionsListHarness sanctions =
new RuleSanctionsListHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, ISanctionsList(ZERO_ADDRESS));
RuleBlacklistOwnable2StepHarness blacklistOwnable =
new RuleBlacklistOwnable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
RuleWhitelistOwnable2StepHarness whitelistOwnable =
- new RuleWhitelistOwnable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ new RuleWhitelistOwnable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
RuleWhitelistWrapperOwnable2StepHarness wrapperOwnable =
new RuleWhitelistWrapperOwnable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
RuleERC2980Ownable2StepHarness erc2980Ownable =
- new RuleERC2980Ownable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
+ new RuleERC2980Ownable2StepHarness(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
assertGe(blacklist.exposedMsgDataLength(), 4);
assertGe(whitelist.exposedMsgDataLength(), 4);
@@ -86,8 +89,11 @@ contract OperationCoverageExtraTest is Test, HelperContract {
rule.created(ADDRESS1, 1);
rule.destroyed(ADDRESS1, 1);
- assertTrue(rule.supportsInterface(type(IRule).interfaceId));
assertTrue(rule.supportsInterface(RuleInterfaceId.IRULE_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(type(IERC7551Compliance).interfaceId));
+ assertTrue(rule.supportsInterface(type(IERC3643ComplianceFull).interfaceId));
assertFalse(rule.supportsInterface(bytes4(0xdeadbeef)));
}
@@ -96,9 +102,12 @@ contract OperationCoverageExtraTest is Test, HelperContract {
new RuleConditionalTransferLightOwnable2Step(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
- rule.approveTransfer(ADDRESS1, ADDRESS2, 77);
+ rule.bindToken(ADDRESS3);
vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
+ rule.approveTransfer(ADDRESS1, ADDRESS2, 77);
+
+ vm.prank(ADDRESS3);
rule.transferred(ADDRESS3, ADDRESS1, ADDRESS2, 77);
assertEq(rule.approvedCount(ADDRESS1, ADDRESS2, 77), 0);
@@ -114,8 +123,11 @@ contract OperationCoverageExtraTest is Test, HelperContract {
assertEq(rule.messageForTransferRestriction(CODE_NONEXISTENT), TEXT_CODE_NOT_FOUND);
assertTrue(rule.supportsInterface(type(IERC165).interfaceId));
- assertTrue(rule.supportsInterface(type(IRule).interfaceId));
assertTrue(rule.supportsInterface(RuleInterfaceId.IRULE_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(type(IERC7551Compliance).interfaceId));
+ assertTrue(rule.supportsInterface(type(IERC3643ComplianceFull).interfaceId));
assertFalse(rule.supportsInterface(bytes4(0xdeadbeef)));
}
}
diff --git a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol
index 911fe97..35d1f9a 100644
--- a/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol
+++ b/test/DeploymentScripts/DeployCMTATWithBlacklistAndSanctionsList.t.sol
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol";
import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol";
import {ISanctionsList} from "src/rules/interfaces/ISanctionsList.sol";
diff --git a/test/HelperContract.sol b/test/HelperContract.sol
index 21cc0d7..d7a11a0 100644
--- a/test/HelperContract.sol
+++ b/test/HelperContract.sol
@@ -5,7 +5,7 @@ import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol";
// RuleEngine
import {RuleEngineInvariantStorage} from "RuleEngine/modules/library/RuleEngineInvariantStorage.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
// RUleBlackList
import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol";
diff --git a/test/RuleBlacklist/CMTATIntegration.t.sol b/test/RuleBlacklist/CMTATIntegration.t.sol
index 0c0cdf6..8bd6a1a 100644
--- a/test/RuleBlacklist/CMTATIntegration.t.sol
+++ b/test/RuleBlacklist/CMTATIntegration.t.sol
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol";
import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol";
diff --git a/test/RuleBlacklist/RuleEngineIntegration.t.sol b/test/RuleBlacklist/RuleEngineIntegration.t.sol
index d876e59..345c31c 100644
--- a/test/RuleBlacklist/RuleEngineIntegration.t.sol
+++ b/test/RuleBlacklist/RuleEngineIntegration.t.sol
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {RuleBlacklist} from "src/rules/validation/deployment/RuleBlacklist.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
/**
* @title Integration test between RuleEngine and RuleBlacklist
diff --git a/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol b/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol
index f44cd09..f0427e5 100644
--- a/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol
+++ b/test/RuleConditionalTransferLight/Ownable/RuleConditionalTransferLightOwnable2StepAccessControl.t.sol
@@ -15,6 +15,8 @@ contract RuleConditionalTransferLightOwnable2StepAccessControl is Test, HelperCo
function setUp() public {
rule = new RuleConditionalTransferLightOwnable2Step(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
+ vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
+ rule.bindToken(ADDRESS3);
}
function testOwnerCanApproveAndExecuteTransfer() public {
@@ -22,7 +24,7 @@ contract RuleConditionalTransferLightOwnable2StepAccessControl is Test, HelperCo
rule.approveTransfer(ADDRESS1, ADDRESS2, 10);
assertEq(rule.approvedCount(ADDRESS1, ADDRESS2, 10), 1);
- vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
+ vm.prank(ADDRESS3);
rule.transferred(ADDRESS1, ADDRESS2, 10);
assertEq(rule.approvedCount(ADDRESS1, ADDRESS2, 10), 0);
}
@@ -35,7 +37,9 @@ contract RuleConditionalTransferLightOwnable2StepAccessControl is Test, HelperCo
vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS);
rule.approveTransfer(ADDRESS1, ADDRESS2, 10);
- vm.expectRevert(abi.encodeWithSelector(OwnableUnauthorizedAccount.selector, ATTACKER));
+ vm.expectRevert(
+ abi.encodeWithSelector(RuleConditionalTransferLight_TransferExecutorUnauthorized.selector, ATTACKER)
+ );
vm.prank(ATTACKER);
rule.transferred(ADDRESS1, ADDRESS2, 10);
}
diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol
index 2449845..21e296d 100644
--- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol
+++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightApproveAndTransfer.t.sol
@@ -6,6 +6,7 @@ import {HelperContract} from "../HelperContract.sol";
import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol";
import {MockERC20WithTransferContext} from "src/mocks/MockERC20WithTransferContext.sol";
import {MockERC20TransferFromFalse} from "src/mocks/MockERC20TransferFromFalse.sol";
+import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract RuleConditionalTransferLightApproveAndTransfer is Test, HelperContract {
RuleConditionalTransferLight private rule;
@@ -28,17 +29,18 @@ contract RuleConditionalTransferLightApproveAndTransfer is Test, HelperContract
token.approve(address(rule), 10);
vm.prank(DEFAULT_ADMIN_ADDRESS);
- rule.approveAndTransferIfAllowed(address(token), ADDRESS1, ADDRESS2, 10);
+ rule.approveAndTransferIfAllowed(ADDRESS1, ADDRESS2, 10);
assertEq(token.balanceOf(ADDRESS1), 90);
assertEq(token.balanceOf(ADDRESS2), 10);
assertEq(rule.approvedCount(ADDRESS1, ADDRESS2, 10), 0);
}
- function testApproveAndTransferIfAllowedRevertsOnZeroToken() public {
- vm.expectRevert(RuleConditionalTransferLight_TokenAddressZeroNotAllowed.selector);
+ function testApproveAndTransferIfAllowedRevertsWhenNoTokenBound() public {
+ RuleConditionalTransferLight freshRule = new RuleConditionalTransferLight(DEFAULT_ADMIN_ADDRESS);
+ vm.expectRevert(RuleConditionalTransferLight_TokenNotBound.selector);
vm.prank(DEFAULT_ADMIN_ADDRESS);
- rule.approveAndTransferIfAllowed(ZERO_ADDRESS, ADDRESS1, ADDRESS2, 10);
+ freshRule.approveAndTransferIfAllowed(ADDRESS1, ADDRESS2, 10);
}
function testApproveAndTransferIfAllowedRevertsOnInsufficientAllowance() public {
@@ -48,15 +50,20 @@ contract RuleConditionalTransferLightApproveAndTransfer is Test, HelperContract
)
);
vm.prank(DEFAULT_ADMIN_ADDRESS);
- rule.approveAndTransferIfAllowed(address(token), ADDRESS1, ADDRESS2, 10);
+ rule.approveAndTransferIfAllowed(ADDRESS1, ADDRESS2, 10);
}
function testApproveAndTransferIfAllowedRevertsOnTransferFailure() public {
MockERC20TransferFromFalse failingToken = new MockERC20TransferFromFalse();
failingToken.setAllowance(ADDRESS1, address(rule), 10);
- vm.expectRevert(RuleConditionalTransferLight_TransferFailed.selector);
+ vm.startPrank(DEFAULT_ADMIN_ADDRESS);
+ rule.unbindToken(address(token));
+ rule.bindToken(address(failingToken));
+ vm.stopPrank();
+
+ vm.expectRevert(abi.encodeWithSelector(SafeERC20.SafeERC20FailedOperation.selector, address(failingToken)));
vm.prank(DEFAULT_ADMIN_ADDRESS);
- rule.approveAndTransferIfAllowed(address(failingToken), ADDRESS1, ADDRESS2, 10);
+ rule.approveAndTransferIfAllowed(ADDRESS1, ADDRESS2, 10);
}
}
diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol
index c7f96bc..e928bd1 100644
--- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol
+++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightRuleEngineIntegration.t.sol
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol";
/**
diff --git a/test/RuleConditionalTransferLight/RuleConditionalTransferLightUnit.t.sol b/test/RuleConditionalTransferLight/RuleConditionalTransferLightUnit.t.sol
index d19f79b..882cacd 100644
--- a/test/RuleConditionalTransferLight/RuleConditionalTransferLightUnit.t.sol
+++ b/test/RuleConditionalTransferLight/RuleConditionalTransferLightUnit.t.sol
@@ -19,6 +19,19 @@ contract RuleConditionalTransferLightUnit is Test, HelperContract {
new RuleConditionalTransferLight(address(0));
}
+ function testBindToken_RevertsIfAlreadyBound() public {
+ vm.expectRevert(RuleConditionalTransferLight_TokenAlreadyBound.selector);
+ vm.prank(DEFAULT_ADMIN_ADDRESS);
+ rule.bindToken(ADDRESS1);
+ }
+
+ function testBindToken_RevertsForUnauthorizedCaller() public {
+ RuleConditionalTransferLight freshRule = new RuleConditionalTransferLight(DEFAULT_ADMIN_ADDRESS);
+ vm.expectRevert();
+ vm.prank(ADDRESS1);
+ freshRule.bindToken(ADDRESS3);
+ }
+
function testApproveTransfer_OnlyOperator() public {
vm.expectRevert();
vm.prank(ADDRESS1);
diff --git a/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol b/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol
index 5bc5bff..c963cf2 100644
--- a/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol
+++ b/test/RuleERC2980/AccessControl/RuleERC2980AccessControl.t.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
-import {IAccessControl} from "OZ/access/IAccessControl.sol";
+import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
import {HelperContract} from "../../HelperContract.sol";
import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol";
@@ -20,7 +20,7 @@ contract RuleERC2980AccessControlTest is Test, HelperContract {
function setUp() public {
vm.startPrank(DEFAULT_ADMIN_ADDRESS);
- ruleERC2980 = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
+ ruleERC2980 = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
ruleERC2980.grantRole(WHITELIST_ADD, WHITELIST_OPERATOR);
ruleERC2980.grantRole(WHITELIST_REMOVE, WHITELIST_OPERATOR);
ruleERC2980.grantRole(FROZENLIST_ADD, FROZENLIST_OPERATOR);
diff --git a/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol b/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol
index 2e5b677..cf69419 100644
--- a/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol
+++ b/test/RuleERC2980/Ownable/RuleERC2980Ownable2Step.t.sol
@@ -9,7 +9,7 @@ import {
contract RuleERC2980Ownable2StepTest is Ownable2StepTestBase {
function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) {
address ownerAddr = WHITELIST_OPERATOR_ADDRESS;
- RuleERC2980Ownable2StepContract rule = new RuleERC2980Ownable2StepContract(ownerAddr, ZERO_ADDRESS);
+ RuleERC2980Ownable2StepContract rule = new RuleERC2980Ownable2StepContract(ownerAddr, ZERO_ADDRESS, false);
return (IOwnable2StepLike(address(rule)), ownerAddr);
}
}
diff --git a/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol b/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol
index c465705..0660fe6 100644
--- a/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol
+++ b/test/RuleERC2980/Ownable/RuleERC2980OwnableAccessControl.t.sol
@@ -12,7 +12,7 @@ contract RuleERC2980OwnableAccessControl is Test, HelperContract {
address constant OWNER = WHITELIST_OPERATOR_ADDRESS;
function setUp() public {
- rule = new RuleERC2980Ownable2Step(OWNER, ZERO_ADDRESS);
+ rule = new RuleERC2980Ownable2Step(OWNER, ZERO_ADDRESS, false);
}
/*//////////////////////////////////////////////////////////////
@@ -132,4 +132,9 @@ contract RuleERC2980OwnableAccessControl is Test, HelperContract {
vm.expectRevert(abi.encodeWithSelector(OwnableUnauthorizedAccount.selector, ATTACKER));
rule.addFrozenlistAddresses(addrs);
}
+
+ function testAllowBurnConstructorWhitelistsZeroAddress() public {
+ RuleERC2980Ownable2Step burnEnabled = new RuleERC2980Ownable2Step(OWNER, ZERO_ADDRESS, true);
+ assertTrue(burnEnabled.isWhitelisted(ZERO_ADDRESS));
+ }
}
diff --git a/test/RuleERC2980/RuleERC2980.t.sol b/test/RuleERC2980/RuleERC2980.t.sol
index f189de2..7009235 100644
--- a/test/RuleERC2980/RuleERC2980.t.sol
+++ b/test/RuleERC2980/RuleERC2980.t.sol
@@ -19,7 +19,7 @@ contract RuleERC2980Test is Test, HelperContract {
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleERC2980 = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
+ ruleERC2980 = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
// Whitelist ADDRESS2 (recipient) so transfer tests can focus on the specific check
vm.prank(DEFAULT_ADMIN_ADDRESS);
@@ -104,6 +104,21 @@ contract RuleERC2980Test is Test, HelperContract {
assertEq(resUint8, NO_ERROR);
}
+ function testBurnRecipientNotWhitelistedByDefault() public {
+ assertFalse(ruleERC2980.whitelist(ZERO_ADDRESS));
+ resUint8 = ruleERC2980.detectTransferRestriction(ADDRESS1, ZERO_ADDRESS, 20);
+ assertEq(resUint8, CODE_TO_NOT_WHITELISTED);
+ }
+
+ function testAllowBurnConstructorWhitelistsZeroAddress() public {
+ vm.prank(DEFAULT_ADMIN_ADDRESS);
+ RuleERC2980 burnEnabledRule = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+
+ assertTrue(burnEnabledRule.whitelist(ZERO_ADDRESS));
+ resUint8 = burnEnabledRule.detectTransferRestriction(ADDRESS1, ZERO_ADDRESS, 20);
+ assertEq(resUint8, NO_ERROR);
+ }
+
/*//////////////////////////////////////////////////////////////
FROZENLIST — SENDER FROZEN
//////////////////////////////////////////////////////////////*/
diff --git a/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol b/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol
index 0d3446b..74488cf 100644
--- a/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol
+++ b/test/RuleIdentityRegistry/RuleIdentityRegistryRuleEngineIntegration.t.sol
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {IdentityRegistryMock} from "src/mocks/IdentityRegistryMock.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleIdentityRegistry} from "src/rules/validation/deployment/RuleIdentityRegistry.sol";
/**
diff --git a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol
index 8307b59..a115320 100644
--- a/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol
+++ b/test/RuleMaxTotalSupply/RuleMaxTotalSupplyRuleEngineIntegration.t.sol
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {TotalSupplyMock} from "src/mocks/TotalSupplyMock.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleMaxTotalSupply} from "src/rules/validation/deployment/RuleMaxTotalSupply.sol";
/**
diff --git a/test/RuleSanctionList/RuleEngineIntegration.t.sol b/test/RuleSanctionList/RuleEngineIntegration.t.sol
index 62e7a19..72f244f 100644
--- a/test/RuleSanctionList/RuleEngineIntegration.t.sol
+++ b/test/RuleSanctionList/RuleEngineIntegration.t.sol
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {SanctionListOracle} from "src/mocks/SanctionListOracle.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {RuleSanctionsList} from "src/rules/validation/deployment/RuleSanctionsList.sol";
/**
diff --git a/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol
index 3785f1e..7451467 100644
--- a/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol
+++ b/test/RuleSpenderWhitelist/Ownable/RuleSpenderWhitelistOwnable2Step.t.sol
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../../HelperContract.sol";
-import {Ownable} from "OZ/access/Ownable.sol";
+import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {RuleSpenderWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleSpenderWhitelistOwnable2Step.sol";
import {RuleSpenderWhitelistOwnable2StepHarness} from "src/mocks/harness/RuleSpenderWhitelistHarnesses.sol";
diff --git a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol
index 5bd1f2c..075475b 100644
--- a/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol
+++ b/test/RuleSpenderWhitelist/RuleSpenderWhitelist.t.sol
@@ -5,8 +5,10 @@ import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {RuleSpenderWhitelist} from "src/rules/validation/deployment/RuleSpenderWhitelist.sol";
import {AccessControlModuleStandalone} from "src/modules/AccessControlModuleStandalone.sol";
-import {IAccessControl} from "OZ/access/IAccessControl.sol";
-import {IRule} from "RuleEngine/interfaces/IRule.sol";
+import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
+import {RuleInterfaceId} from "RuleEngine/modules/library/RuleInterfaceId.sol";
+import {ERC1404ExtendInterfaceId} from "CMTAT/library/ERC1404ExtendInterfaceId.sol";
+import {RuleEngineInterfaceId} from "CMTAT/library/RuleEngineInterfaceId.sol";
import {RuleSpenderWhitelistHarness} from "src/mocks/harness/RuleSpenderWhitelistHarnesses.sol";
contract RuleSpenderWhitelistTest is Test, HelperContract {
@@ -88,7 +90,10 @@ contract RuleSpenderWhitelistTest is Test, HelperContract {
function testSupportsInterface() public view {
assertTrue(rule.supportsInterface(type(IAccessControl).interfaceId));
- assertTrue(rule.supportsInterface(type(IRule).interfaceId));
+ assertTrue(rule.supportsInterface(RuleInterfaceId.IRULE_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(ERC1404ExtendInterfaceId.ERC1404EXTEND_INTERFACE_ID));
+ assertTrue(rule.supportsInterface(RuleEngineInterfaceId.RULE_ENGINE_INTERFACE_ID));
+ assertFalse(rule.supportsInterface(bytes4(0xdeadbeef)));
}
function testMetaTxOverridesAreReachable() public view {
diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol
index c90a032..8f3a1cf 100644
--- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol
+++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol
@@ -15,7 +15,7 @@ contract RuleWhitelistAccessControl is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function testCannotAttackeraddAddress() public {
diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol
index 73cfac9..9fbb5b3 100644
--- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol
+++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol
@@ -13,7 +13,7 @@ contract RuleWhitelistAccessControlOZ is Test, HelperContract, AccessControl {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function testCanGrantRoleAsAdmin() public {
diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol
index 0a7e4a8..48691d0 100644
--- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol
+++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlRoleMembers.t.sol
@@ -10,7 +10,7 @@ import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
contract RuleWhitelistAccessControlRoleMembers is AccessControlEnumerableTestBase {
function _deployAccessControl() internal override returns (IAccessControlEnumerableLike, address) {
address adminAddr = DEFAULT_ADMIN_ADDRESS;
- RuleWhitelist rule = new RuleWhitelist(adminAddr, ZERO_ADDRESS, true);
+ RuleWhitelist rule = new RuleWhitelist(adminAddr, ZERO_ADDRESS, true, false);
return (IAccessControlEnumerableLike(address(rule)), adminAddr);
}
diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol
index facee60..c861294 100644
--- a/test/RuleWhitelist/CMTATIntegration.t.sol
+++ b/test/RuleWhitelist/CMTATIntegration.t.sol
@@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol";
import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
/**
* @title Integration test with the CMTAT
@@ -18,7 +18,7 @@ contract CMTATIntegration is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
// global arrange
cmtatDeployment = new CMTATDeployment();
cmtatContract = cmtatDeployment.cmtat();
diff --git a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol
index cfd27a1..a102d90 100644
--- a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol
+++ b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol
@@ -6,7 +6,7 @@ import {HelperContract} from "../HelperContract.sol";
import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol";
import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
import {AccessControlModuleStandalone} from "../../src/modules/AccessControlModuleStandalone.sol";
/**
* @title Integration test with the CMTAT
@@ -24,9 +24,9 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
- ruleWhitelist2 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
- ruleWhitelist3 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
+ ruleWhitelist2 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
+ ruleWhitelist3 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
ruleWhitelistWrapper = new RuleWhitelistWrapper(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
vm.prank(DEFAULT_ADMIN_ADDRESS);
ruleWhitelistWrapper.addRule(ruleWhitelist);
diff --git a/test/RuleWhitelist/CMTATRuleEngineIntegration.t.sol b/test/RuleWhitelist/CMTATRuleEngineIntegration.t.sol
index 9858f97..6a5794d 100644
--- a/test/RuleWhitelist/CMTATRuleEngineIntegration.t.sol
+++ b/test/RuleWhitelist/CMTATRuleEngineIntegration.t.sol
@@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {CMTATDeployment} from "RuleEngine/../test/utils/CMTATDeployment.sol";
import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
/**
* @title Integration test with CMTAT + RuleEngine + RuleWhitelist
@@ -15,7 +15,7 @@ contract CMTATRuleEngineIntegration is Test, HelperContract {
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
cmtatDeployment = new CMTATDeployment();
cmtatContract = cmtatDeployment.cmtat();
diff --git a/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol b/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol
index 713e3e6..5ea43e5 100644
--- a/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol
+++ b/test/RuleWhitelist/Ownable/RuleWhitelistOwnable2Step.t.sol
@@ -9,7 +9,8 @@ import {
contract RuleWhitelistOwnable2StepTest is Ownable2StepTestBase {
function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) {
address ownerAddr = WHITELIST_OPERATOR_ADDRESS;
- RuleWhitelistOwnable2StepContract rule = new RuleWhitelistOwnable2StepContract(ownerAddr, ZERO_ADDRESS, true);
+ RuleWhitelistOwnable2StepContract rule =
+ new RuleWhitelistOwnable2StepContract(ownerAddr, ZERO_ADDRESS, true, false);
return (IOwnable2StepLike(address(rule)), ownerAddr);
}
}
diff --git a/test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol b/test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol
index 72a8452..f3c95e7 100644
--- a/test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol
+++ b/test/RuleWhitelist/Ownable/RuleWhitelistOwnableAccessControl.t.sol
@@ -8,7 +8,13 @@ import {RuleWhitelistOwnable2Step} from "src/rules/validation/deployment/RuleWhi
contract RuleWhitelistOwnable2StepAccessControl is OwnableAddressListTestBase {
function _deployAddressList() internal override returns (IAddressList, address) {
address ownerAddr = WHITELIST_OPERATOR_ADDRESS;
- RuleWhitelistOwnable2Step rule = new RuleWhitelistOwnable2Step(ownerAddr, ZERO_ADDRESS, true);
+ RuleWhitelistOwnable2Step rule = new RuleWhitelistOwnable2Step(ownerAddr, ZERO_ADDRESS, true, false);
return (IAddressList(address(rule)), ownerAddr);
}
+
+ function testAllowMintBurnConstructorListsZeroAddress() public {
+ address ownerAddr = WHITELIST_OPERATOR_ADDRESS;
+ RuleWhitelistOwnable2Step rule = new RuleWhitelistOwnable2Step(ownerAddr, ZERO_ADDRESS, true, true);
+ assertTrue(rule.isAddressListed(ZERO_ADDRESS));
+ }
}
diff --git a/test/RuleWhitelist/Ownable/RuleWhitelistOwnableCheckSpender.t.sol b/test/RuleWhitelist/Ownable/RuleWhitelistOwnableCheckSpender.t.sol
index 628a698..e060c5b 100644
--- a/test/RuleWhitelist/Ownable/RuleWhitelistOwnableCheckSpender.t.sol
+++ b/test/RuleWhitelist/Ownable/RuleWhitelistOwnableCheckSpender.t.sol
@@ -11,7 +11,7 @@ contract RuleWhitelistOwnable2StepCheckSpender is Test, HelperContract {
RuleWhitelistOwnable2Step rule;
function setUp() public {
- rule = new RuleWhitelistOwnable2Step(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ rule = new RuleWhitelistOwnable2Step(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function testOnlyOwnerCanSetCheckSpender() public {
diff --git a/test/RuleWhitelist/Ownable/RuleWhitelistWrapperOwnable2Step.t.sol b/test/RuleWhitelist/Ownable/RuleWhitelistWrapperOwnable2Step.t.sol
index 1b0dabf..3b21ebe 100644
--- a/test/RuleWhitelist/Ownable/RuleWhitelistWrapperOwnable2Step.t.sol
+++ b/test/RuleWhitelist/Ownable/RuleWhitelistWrapperOwnable2Step.t.sol
@@ -12,7 +12,7 @@ contract RuleWhitelistWrapperOwnable2StepTest is Ownable2StepTestBase {
function _deployOwnable2Step() internal override returns (IOwnable2StepLike, address) {
address ownerAddr = WHITELIST_OPERATOR_ADDRESS;
wrapper = new RuleWhitelistWrapperOwnable2Step(ownerAddr, ZERO_ADDRESS, true);
- rule = new RuleWhitelist(ownerAddr, ZERO_ADDRESS, true);
+ rule = new RuleWhitelist(ownerAddr, ZERO_ADDRESS, true, false);
return (IOwnable2StepLike(address(wrapper)), ownerAddr);
}
diff --git a/test/RuleWhitelist/RuleEngineIntegration.t.sol b/test/RuleWhitelist/RuleEngineIntegration.t.sol
index b88bd76..cd3f27d 100644
--- a/test/RuleWhitelist/RuleEngineIntegration.t.sol
+++ b/test/RuleWhitelist/RuleEngineIntegration.t.sol
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
/**
* @title Integration test between RuleEngine and RuleWhitelist
@@ -15,7 +15,7 @@ contract RuleEngineIntegration is Test, HelperContract {
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
vm.prank(DEFAULT_ADMIN_ADDRESS);
ruleEngineMock = new RuleEngine(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
}
diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol
index a33f457..40f7cb7 100644
--- a/test/RuleWhitelist/RuleWhitelist.t.sol
+++ b/test/RuleWhitelist/RuleWhitelist.t.sol
@@ -12,7 +12,7 @@ contract RuleWhitelistTest is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function _addAddresses() internal {
@@ -64,6 +64,12 @@ contract RuleWhitelistTest is Test, HelperContract {
assertEq(resBool, true);
}
+ function testAllowMintBurnConstructorListsZeroAddress() public {
+ vm.prank(WHITELIST_OPERATOR_ADDRESS);
+ RuleWhitelist burnEnabledRule = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, true);
+ assertTrue(burnEnabledRule.isAddressListed(ZERO_ADDRESS));
+ }
+
function testContainsReflectsListingStatus() public {
// Act - Assert
assertFalse(ruleWhitelist.contains(ADDRESS1));
diff --git a/test/RuleWhitelist/RuleWhitelistAdd.t.sol b/test/RuleWhitelist/RuleWhitelistAdd.t.sol
index f74bca3..a0bbf02 100644
--- a/test/RuleWhitelist/RuleWhitelistAdd.t.sol
+++ b/test/RuleWhitelist/RuleWhitelistAdd.t.sol
@@ -13,7 +13,7 @@ contract RuleWhitelistAddTest is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function _addAddresses() internal {
diff --git a/test/RuleWhitelist/RuleWhitelistDeployment.t.sol b/test/RuleWhitelist/RuleWhitelistDeployment.t.sol
index 6c22ca8..83f3204 100644
--- a/test/RuleWhitelist/RuleWhitelistDeployment.t.sol
+++ b/test/RuleWhitelist/RuleWhitelistDeployment.t.sol
@@ -20,7 +20,7 @@ contract RuleWhitelistDeploymentTest is Test, HelperContract {
MinimalForwarderMock forwarder = new MinimalForwarderMock();
forwarder.initialize(ERC2771ForwarderDomain);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, address(forwarder), true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, address(forwarder), true, false);
// assert
resBool = ruleWhitelist.hasRole(ADDRESS_LIST_ADD_ROLE, WHITELIST_OPERATOR_ADDRESS);
@@ -38,6 +38,6 @@ contract RuleWhitelistDeploymentTest is Test, HelperContract {
forwarder.initialize(ERC2771ForwarderDomain);
vm.expectRevert(AccessControlModuleStandalone.AccessControlModuleStandalone_AddressZeroNotAllowed.selector);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(address(0), address(forwarder), true);
+ ruleWhitelist = new RuleWhitelist(address(0), address(forwarder), true, false);
}
}
diff --git a/test/RuleWhitelist/RuleWhitelistRemove.t.sol b/test/RuleWhitelist/RuleWhitelistRemove.t.sol
index 8f90c21..470f638 100644
--- a/test/RuleWhitelist/RuleWhitelistRemove.t.sol
+++ b/test/RuleWhitelist/RuleWhitelistRemove.t.sol
@@ -13,7 +13,7 @@ contract RuleWhitelistRemoveTest is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
}
function _addAddresses() internal {
diff --git a/test/RuleWhitelist/RuleWhitelistWrapperRuleEngineIntegration.t.sol b/test/RuleWhitelist/RuleWhitelistWrapperRuleEngineIntegration.t.sol
index 1645c07..555c609 100644
--- a/test/RuleWhitelist/RuleWhitelistWrapperRuleEngineIntegration.t.sol
+++ b/test/RuleWhitelist/RuleWhitelistWrapperRuleEngineIntegration.t.sol
@@ -5,7 +5,7 @@ import {Test} from "forge-std/Test.sol";
import {HelperContract} from "../HelperContract.sol";
import {RuleWhitelist} from "src/rules/validation/deployment/RuleWhitelist.sol";
import {RuleWhitelistWrapper} from "src/rules/validation/deployment/RuleWhitelistWrapper.sol";
-import {RuleEngine} from "RuleEngine/RuleEngine.sol";
+import {RuleEngine} from "RuleEngine/deployment/RuleEngine.sol";
/**
* @title Integration test between RuleEngine and RuleWhitelistWrapper
@@ -15,7 +15,7 @@ contract RuleWhitelistWrapperRuleEngineIntegration is Test, HelperContract {
function setUp() public {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
vm.prank(DEFAULT_ADMIN_ADDRESS);
ruleWhitelistWrapper = new RuleWhitelistWrapper(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
vm.prank(DEFAULT_ADMIN_ADDRESS);
diff --git a/test/RuleWhitelist/WhitelistWrapper.t.sol b/test/RuleWhitelist/WhitelistWrapper.t.sol
index 430b649..0a668f9 100644
--- a/test/RuleWhitelist/WhitelistWrapper.t.sol
+++ b/test/RuleWhitelist/WhitelistWrapper.t.sol
@@ -24,9 +24,9 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract {
// Arrange
function setUp() public {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
- ruleWhitelist2 = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
- ruleWhitelist3 = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ ruleWhitelist = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
+ ruleWhitelist2 = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
+ ruleWhitelist3 = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
ruleWhitelistWrapper = new RuleWhitelistWrapper(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
ruleWhitelistWrapper.addRule(ruleWhitelist);
@@ -342,7 +342,7 @@ contract CMTATIntegrationWhitelistWrapper is Test, HelperContract {
function testInternalTransferredSpenderOverload() public {
RuleWhitelistWrapperHarnessInternal wrapperHarness =
new RuleWhitelistWrapperHarnessInternal(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
- RuleWhitelist child = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true);
+ RuleWhitelist child = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, true, false);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
wrapperHarness.addRule(child);
diff --git a/test/TransferContext/TransferContext.t.sol b/test/TransferContext/TransferContext.t.sol
index 203eb4e..46d86d7 100644
--- a/test/TransferContext/TransferContext.t.sol
+++ b/test/TransferContext/TransferContext.t.sol
@@ -16,7 +16,7 @@ contract TransferContextTest is Test, HelperContract {
function _deployWhitelistRule() internal returns (RuleWhitelist) {
vm.prank(WHITELIST_OPERATOR_ADDRESS);
- RuleWhitelist rule = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, false);
+ RuleWhitelist rule = new RuleWhitelist(WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS, false, false);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
rule.addAddress(ADDRESS1);
vm.prank(WHITELIST_OPERATOR_ADDRESS);
diff --git a/test/TransferContext/TransferContextMocks.t.sol b/test/TransferContext/TransferContextMocks.t.sol
index 7a6ba96..8716d85 100644
--- a/test/TransferContext/TransferContextMocks.t.sol
+++ b/test/TransferContext/TransferContextMocks.t.sol
@@ -19,7 +19,7 @@ contract TransferContextMocksTest is Test, HelperContract {
function _deployWhitelistRule() internal returns (RuleWhitelist) {
vm.prank(DEFAULT_ADMIN_ADDRESS);
- RuleWhitelist rule = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
+ RuleWhitelist rule = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false, false);
vm.startPrank(DEFAULT_ADMIN_ADDRESS);
rule.addAddress(ADDRESS1);
rule.addAddress(ADDRESS2);
diff --git a/test/Version.t.sol b/test/Version.t.sol
index 10e5b0e..9bc8030 100644
--- a/test/Version.t.sol
+++ b/test/Version.t.sol
@@ -13,10 +13,10 @@ import {RuleERC2980} from "src/rules/validation/deployment/RuleERC2980.sol";
import {RuleConditionalTransferLight} from "src/rules/operation/RuleConditionalTransferLight.sol";
contract VersionTest is Test, HelperContract {
- string constant EXPECTED_VERSION = "0.2.0";
+ string constant EXPECTED_VERSION = "0.3.0";
function testVersionRuleWhitelist() public {
- RuleWhitelist rule = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true);
+ RuleWhitelist rule = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, true, false);
assertEq(rule.version(), EXPECTED_VERSION);
}
@@ -42,7 +42,7 @@ contract VersionTest is Test, HelperContract {
}
function testVersionRuleERC2980() public {
- RuleERC2980 rule = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS);
+ RuleERC2980 rule = new RuleERC2980(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS, false);
assertEq(rule.version(), EXPECTED_VERSION);
}
diff --git a/test/hardhat/smoke.test.js b/test/hardhat/smoke.test.js
new file mode 100644
index 0000000..3fe93d9
--- /dev/null
+++ b/test/hardhat/smoke.test.js
@@ -0,0 +1,18 @@
+const { expect } = require("chai");
+const { ethers } = require("hardhat");
+
+describe("Hardhat smoke", function () {
+ it("compiles and deploys RuleWhitelist", async function () {
+ const [admin, listed] = await ethers.getSigners();
+
+ const RuleWhitelist = await ethers.getContractFactory("RuleWhitelist");
+ const rule = await RuleWhitelist.deploy(admin.address, ethers.ZeroAddress, true, false);
+ await rule.waitForDeployment();
+
+ expect(await rule.listedAddressCount()).to.equal(0n);
+
+ await rule.addAddress(listed.address);
+ expect(await rule.isAddressListed(listed.address)).to.equal(true);
+ });
+});
+