From d68112a356046b91b28603b716cf998310d9dcd7 Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Mon, 23 Mar 2026 00:43:28 +0100 Subject: [PATCH 01/12] mainnet config file --- deployments/mainnet/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/mainnet/config.json b/deployments/mainnet/config.json index e4ad6f8f..06f868fd 100644 --- a/deployments/mainnet/config.json +++ b/deployments/mainnet/config.json @@ -7,7 +7,7 @@ "ssvNetworkViews": "0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4", "ssvToken": "0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54", "cooldownDuration": 604800, - "upgradeTimestamp": 24684128, + "upgradeTimestamp": 1774351800, "quorumBps": 7500, "defaultOracleIds": [1, 2, 3, 4], "protocolParams": { From 78081479aacb66514daa5a1405b9466d9d434518 Mon Sep 17 00:00:00 2001 From: Lior Rutenberg Date: Mon, 23 Mar 2026 11:05:35 +0200 Subject: [PATCH 02/12] mainnet deployment json --- deployments/mainnet/deploy-result.json | 1 + deployments/mainnet/deploy-result.v2.0.0.json | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 120000 deployments/mainnet/deploy-result.json create mode 100644 deployments/mainnet/deploy-result.v2.0.0.json diff --git a/deployments/mainnet/deploy-result.json b/deployments/mainnet/deploy-result.json new file mode 120000 index 00000000..03fd85e2 --- /dev/null +++ b/deployments/mainnet/deploy-result.json @@ -0,0 +1 @@ +deploy-result.v2.0.0.json \ No newline at end of file diff --git a/deployments/mainnet/deploy-result.v2.0.0.json b/deployments/mainnet/deploy-result.v2.0.0.json new file mode 100644 index 00000000..1bf9e9b9 --- /dev/null +++ b/deployments/mainnet/deploy-result.v2.0.0.json @@ -0,0 +1,24 @@ +{ + "deployer": "0x3187a42658417a4d60866163A4534Ce00D40C0C8", + "chainId": "1", + "network": "mainnet", + "deployedAt": "2026-03-23T09:03:25.491Z", + "blockNumber": 24719200, + "implementations": { + "SSVNetworkSSVStakingUpgrade": "0x93029DC6F03c951f353E51a8f16f722CAa210e5f", + "SSVNetworkViews": "0x98FEBF8824028A212875d797aBa88362A9B11cc9" + }, + "cssvToken": { + "address": "0xe018D31F120A637828F46aFD6c64EC099d960546", + "deployed": true + }, + "modules": { + "SSVOperators": "0x338554A41b6a2Ec9325157C01666AD8b0ACe6060", + "SSVClusters": "0xf26bFC86210e9b53f95F4DFDBdEd4B2A42e792ED", + "SSVDAO": "0x8AB722746a83eAE7158e55d43dc4aDe5bb9E0212", + "SSVViews": "0x055051fa508EEdA80c38De34CA936aBa59642C45", + "SSVOperatorsWhitelist": "0xd302E99feE1BAB03824Ce9aE20c6c578908CcFa5", + "SSVStaking": "0x1B844e7abB9779f551dDcCb5f0f34A54eC1c7034", + "SSVValidators": "0xB1E718d775811af33382eF9850a8C2CA1097c8fB" + } +} From c14755671b3dd6b858edde3e674753287814a73e Mon Sep 17 00:00:00 2001 From: Lior Rutenberg Date: Mon, 23 Mar 2026 11:07:49 +0200 Subject: [PATCH 03/12] mainnet msig batch upgrade --- deployments/mainnet/multisig-batch.json | 132 ++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 deployments/mainnet/multisig-batch.json diff --git a/deployments/mainnet/multisig-batch.json b/deployments/mainnet/multisig-batch.json new file mode 100644 index 00000000..a7504cc6 --- /dev/null +++ b/deployments/mainnet/multisig-batch.json @@ -0,0 +1,132 @@ +{ + "version": "1.0", + "chainId": "1", + "createdAt": 1774256802776, + "meta": { + "name": "SSV Network v2.0.0 Upgrade (mainnet)", + "description": "Upgrade SSVNetwork proxy, attach modules, set protocol parameters, and configure oracles for the mainnet environment.", + "createdFromSafeAddress": "0xb35096b074fdb9bBac63E3AdaE0Bbde512B2E6b6" + }, + "transactions": [ + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x4f1ef28600000000000000000000000093029dc6f03c951f353e51a8f16f722caa210e5f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4d0937f030000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000001d4c00000000000000000000000000000000000000000000000000000000" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000338554a41b6a2ec9325157c01666ad8b0ace6060" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f26bfc86210e9b53f95f4dfdbded4b2a42e792ed" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b000000000000000000000000000000000000000000000000000000000000000020000000000000000000000008ab722746a83eae7158e55d43dc4ade5bb9e0212" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000055051fa508eeda80c38de34ca936aba59642c45" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000d302e99fee1bab03824ce9ae20c6c578908ccfa5" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b000000000000000000000000000000000000000000000000000000000000000050000000000000000000000001b844e7abb9779f551ddccb5f0f34a54ec1c7034" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe3e324b00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000b1e718d775811af33382ef9850a8c2ca1097c8fb" + }, + { + "to": "0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4", + "value": "0", + "data": "0x3659cfe600000000000000000000000098febf8824028a212875d797aba88362a9b11cc9" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x1f1f9fd500000000000000000000000000000000000000000000000000000000d40cab00" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x6512447d00000000000000000000000000000000000000000000000000000000000053e8" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe567ed58000000000000000000000000000000000000000000000000000000000000c3c8" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x11dff2490000000000000000000000000000000000000000000000000000000000000000" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xb4c9c40800000000000000000000000000000000000000000000000000024a7d4e648800" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x9f5c130700000000000000000000000000000000000000000000000009594aecc23b4000" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x6f4b158d000000000000000000000000000000000000000000000000000000013e148720" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xe9d232cd0000000000000000000000000000000000000000000000000000000000989680" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x9ba0e7000000000000000000000000000000000000000000000000000000000000001d4c" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x5d756b1d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c61f7bd9ee5a3d011caf47aa0e5411f720593920" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x5d756b1d0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c07332e05cec1c4896555a6d10361233fdf14422" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x5d756b1d000000000000000000000000000000000000000000000000000000000000000300000000000000000000000028bea5b242362974d5ddb8f17a1e0e525446960b" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0x5d756b1d00000000000000000000000000000000000000000000000000000000000000040000000000000000000000003a98ee5f80268ed91f8a5880d93468b76a9f3bb4" + }, + { + "to": "0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54", + "value": "0", + "data": "0x095ea7b3000000000000000000000000dd9bc35ae942ef0cfa76930954a156b3ff30a4e10000000000000000000000000000000000000000000000000de0b6b3a7640000" + }, + { + "to": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "value": "0", + "data": "0xa694fc3a0000000000000000000000000000000000000000000000000de0b6b3a7640000" + } + ] +} From a5b644a770f6a24a82ca7b9e4e3b491f56f4af04 Mon Sep 17 00:00:00 2001 From: Lior Rutenberg Date: Mon, 23 Mar 2026 11:15:19 +0200 Subject: [PATCH 04/12] mainnet deployment att data --- .../mainnet/deployment-attestation.json | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 deployments/mainnet/deployment-attestation.json diff --git a/deployments/mainnet/deployment-attestation.json b/deployments/mainnet/deployment-attestation.json new file mode 100644 index 00000000..7c20d6a5 --- /dev/null +++ b/deployments/mainnet/deployment-attestation.json @@ -0,0 +1,111 @@ +{ + "generatedAt": "2026-03-23T09:08:18.750Z", + "deployment": { + "deployer": "0x3187a42658417a4d60866163A4534Ce00D40C0C8", + "chainId": "1", + "network": "mainnet", + "deployedAt": "2026-03-23T09:03:25.491Z", + "blockNumber": 24719200 + }, + "config": { + "currentVersion": "v1.2.0", + "targetVersion": "v2.0.0", + "ssvNetworkProxy": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "ssvNetworkViews": "0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4", + "ssvToken": "0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54", + "cooldownDuration": 604800, + "upgradeTimestamp": 1774351800, + "quorumBps": 7500, + "defaultOracleIds": [ + 1, + 2, + 3, + 4 + ], + "initialStakeAmount": "1000000000000000000", + "protocolParams": { + "networkFeeEth": "3557600000", + "maxOperatorEthFee": "5336500000", + "minOperatorEthFee": "10000000", + "minimumLiquidationCollateralEth": "644852000000000", + "liquidationThresholdPeriod": "21480", + "minBlocksBetweenUpdates": "0", + "minimumLiquidationCollateralSSV": "673652000000000000", + "liquidationThresholdPeriodSSV": "50120" + }, + "oracles": { + "1": "0xc61f7bd9ee5a3d011caf47aa0e5411f720593920", + "2": "0xc07332e05cec1c4896555a6d10361233fdf14422", + "3": "0x28bEa5B242362974d5DDb8f17a1E0e525446960B", + "4": "0x3A98EE5f80268Ed91F8A5880d93468b76a9F3bB4" + } + }, + "contracts": { + "SSVNetworkSSVStakingUpgrade": { + "address": "0x93029DC6F03c951f353E51a8f16f722CAa210e5f", + "constructorArgs": {}, + "initializerArgs": { + "function": "initializeSSVStaking(uint64,uint32[4],uint16)", + "cooldownDuration": "604800", + "defaultOracleIds": "[1,2,3,4]", + "quorumBps": "7500" + }, + "bytecodeHash": "0xbeae889794dbe8294055f399dffbcee2102f17ed6c2dcff639c4253ea19e49d5" + }, + "SSVNetworkViews": { + "address": "0x98FEBF8824028A212875d797aBa88362A9B11cc9", + "constructorArgs": {}, + "bytecodeHash": "0xcfde1aad92cceb355933abd26bca4584e5df77d052d5a1d79f127dfbcfca8a60" + }, + "CSSVToken": { + "address": "0xe018D31F120A637828F46aFD6c64EC099d960546", + "constructorArgs": { + "ssvNetworkProxy": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1" + }, + "bytecodeHash": "0x9d14ddbf6e0224f9863297ad56c10f06121aba20c32e2c5b3f62def709362861" + }, + "SSVOperators": { + "address": "0x338554A41b6a2Ec9325157C01666AD8b0ACe6060", + "constructorArgs": { + "upgradeTimestamp": "1774351800" + }, + "bytecodeHash": "0x3891623830d26723c0b1d63c5f2e0096c21f5d70394d70ab4b56b8a8068c4cfa" + }, + "SSVClusters": { + "address": "0xf26bFC86210e9b53f95F4DFDBdEd4B2A42e792ED", + "constructorArgs": {}, + "bytecodeHash": "0xebc7beaefe2d01a73540e3527bb3acee9157120c86e8355ec072088780f06e24" + }, + "SSVDAO": { + "address": "0x8AB722746a83eAE7158e55d43dc4aDe5bb9E0212", + "constructorArgs": { + "cssvToken": "0xe018D31F120A637828F46aFD6c64EC099d960546" + }, + "bytecodeHash": "0xd8d314f21c630ea5e35e8082dc307bb550bffc57c8003c18cbef0eb023379243" + }, + "SSVViews": { + "address": "0x055051fa508EEdA80c38De34CA936aBa59642C45", + "constructorArgs": { + "cssvToken": "0xe018D31F120A637828F46aFD6c64EC099d960546" + }, + "bytecodeHash": "0xfb2869ea9b85a67f4fab9265d730f51fe8636662f5865e58feb2b5950e64c2e2" + }, + "SSVOperatorsWhitelist": { + "address": "0xd302E99feE1BAB03824Ce9aE20c6c578908CcFa5", + "constructorArgs": {}, + "bytecodeHash": "0x851f6a3d025ea681cbecc7bf1400c8275801b91f74c3c1c48d4dfd1ec7fb2428" + }, + "SSVStaking": { + "address": "0x1B844e7abB9779f551dDcCb5f0f34A54eC1c7034", + "constructorArgs": { + "cssvToken": "0xe018D31F120A637828F46aFD6c64EC099d960546" + }, + "bytecodeHash": "0x2036caa06ba7cbcab9fb947944b43a8e307e3c525a14bfaf5acf18180c0797f7" + }, + "SSVValidators": { + "address": "0xB1E718d775811af33382eF9850a8C2CA1097c8fB", + "constructorArgs": {}, + "bytecodeHash": "0xb14692576e41e11990e347dcb68121457bebf2d6826e93214333cbf47f7bfc3e" + } + } +} From 6bd035b8a471c8fa3b4a8e74bc0285106b5869cf Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Mon, 23 Mar 2026 11:28:52 +0100 Subject: [PATCH 05/12] remove planning docs --- docs/SCENARIO-TESTS.md | 1374 ------ docs/SIMULATION-DESIGN.md | 500 -- docs/SOLIDITY_BEST_PRACTICES.md | 520 -- docs/SPEC_VALIDATOR_REGISTRATION.md | 284 -- ssv-review/Internal-[DIP-X]-SSV-Staking.md | 496 -- .../planning/CONSOLIDATED-AUDIT-FINDINGS.md | 785 --- ssv-review/planning/INVARIANTS_TEST_PLAN.md | 286 -- ssv-review/planning/MAINNET-READINESS.md | 4373 ----------------- ssv-review/planning/STAKING-TEST-PLAN.md | 179 - ssv-review/planning/STAKING-TEST-PROGRESS.md | 54 - 10 files changed, 8851 deletions(-) delete mode 100644 docs/SCENARIO-TESTS.md delete mode 100644 docs/SIMULATION-DESIGN.md delete mode 100644 docs/SOLIDITY_BEST_PRACTICES.md delete mode 100644 docs/SPEC_VALIDATOR_REGISTRATION.md delete mode 100644 ssv-review/Internal-[DIP-X]-SSV-Staking.md delete mode 100644 ssv-review/planning/CONSOLIDATED-AUDIT-FINDINGS.md delete mode 100644 ssv-review/planning/INVARIANTS_TEST_PLAN.md delete mode 100644 ssv-review/planning/MAINNET-READINESS.md delete mode 100644 ssv-review/planning/STAKING-TEST-PLAN.md delete mode 100644 ssv-review/planning/STAKING-TEST-PROGRESS.md diff --git a/docs/SCENARIO-TESTS.md b/docs/SCENARIO-TESTS.md deleted file mode 100644 index 684e6bbc..00000000 --- a/docs/SCENARIO-TESTS.md +++ /dev/null @@ -1,1374 +0,0 @@ -# SSV Network v2.0.0 — Scenario Test Plan - -## How to Read This Document - -Each scenario is a specific sequence of contract interactions with exact expected outcomes. -Tests will be implemented in `test/e2e/` using Hardhat + ethers v6 + Chai. - -### Scenario Format -- **Preconditions**: Exact contract state before the scenario starts -- **Action Sequence**: Step-by-step with block numbers and expected state changes -- **Assertions**: Exact formulas with actual numbers — not "balance is correct" but the full calculation -- **Edge Variations**: Boundary conditions and tweaks on the same scenario - -### Naming Convention -- **OV-N**: Operators + Validators scenarios -- **CM-N**: Clusters + Migration scenarios -- **ES-N**: Effective Balance + Staking scenarios -- **CC-N**: Cross-Cutting scenarios (span 3+ modules) - -### Key Constants Used Throughout -``` -BPS_DENOMINATOR = 10_000 -ETH_DEDUCTED_DIGITS = 100_000 -DEDUCTED_DIGITS = 10_000_000 -DEFAULT_OPERATOR_ETH_FEE = 1_770_000_000 wei → packed raw = 17_700 -DEFAULT_EB_PER_VALIDATOR = 32 ETH -MAX_EB_PER_VALIDATOR = 2048 ETH -PRECISION (staking) = 1e18 -MAX_PENDING_REQUESTS = 10 -MINIMAL_STAKING_AMOUNT = 1_000_000_000 -VERSION_SSV = 0 -VERSION_ETH = 1 -``` - ---- - -## All Discrepancies (Code vs FLOWS.md) - -> **Status as of 2026-02-27**: Reviewed against updated FLOWS.md. Most discrepancies have been resolved through documentation updates. - -### Summary - -- ✅ **8 RESOLVED**: FLOWS.md updated to match code behavior (DISC-OV-1, OV-2, OV-3, OV-4, OV-8, OV-9, CM-3, CM-5, ES-6) -- ℹ️ **6 IMPLEMENTATION DETAILS**: Low-level choices that don't contradict FLOWS.md (DISC-OV-5, OV-6, OV-7, CM-6, ES-1, ES-2, CC-1) - -All originally documented discrepancies have been addressed. Tests can now be implemented with confidence that FLOWS.md accurately reflects the contract behavior. - ---- - -### ✅ DISC-OV-1: `registerOperator` always emits `OperatorPrivacyStatusUpdated` even when public -- **Source partition:** OV -- **Original FLOWS.md claim:** (§4.1) Only emit when `setPrivate` is true -- **Code does:** `SSVOperators.sol:65` — always emits regardless of `setPrivate` value -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §4.1 updated to show unconditional emission: `emit OperatorPrivacyStatusUpdated([operatorId], setPrivate);` -- **Impact:** Low — informational event. Tests should expect the event in both cases with the boolean value. - -### ✅ DISC-OV-2: `registerOperator` does NOT validate fee against minimum when fee is 0 -- **Source partition:** OV -- **Original FLOWS.md claim:** (§4.1) Fee must be within `[minimumOperatorEthFee, operatorMaxFee]` -- **Code does:** `SSVOperators.sol:38-43` — minimum check skipped when fee=0 (`if (fee != 0 && fee < minimumOperatorEthFee)`) -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §4.1 updated to clarify: "Fee must be 0 (free operator) OR within `[minimumOperatorEthFee, operatorMaxFee]`" -- **Impact:** Medium — zero-fee operators are intentionally allowed and cannot increase fees later. - -### ✅ DISC-OV-3: `removeOperator` does NOT check `validatorCount == 0 && ethValidatorCount == 0` -- **Source partition:** OV -- **Original FLOWS.md claim:** (§4.2) "Operator must have 0 validators in BOTH SSV and ETH counts" -- **Code does:** `SSVOperators.sol:71-93` — no validator count check before removal -- **Resolution:** ✅ **RESOLVED** — Original claim was incorrect. FLOWS.md §4.2 correctly documents only: "Operator must exist" and "Caller must be operator owner". No validator count requirement is imposed (by design). -- **Impact:** HIGH for invariants — an operator with active validators CAN be removed, which may break `ethDaoValidatorCount == Σ(operator.ethValidatorCount)`. This is intentional design; clusters referencing removed operators continue to function with frozen fee indices. - -### ✅ DISC-OV-4: `removeOperator` does NOT zero `ethSnapshot.index` or `snapshot.index` -- **Source partition:** OV -- **Original FLOWS.md claim:** (§4.2) Implies ALL snapshot fields zeroed -- **Code does:** `SSVOperators.sol:324-335` via `_resetOperatorState` — indices intentionally preserved -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §4.2 now explicitly states: "Keeps `ethSnapshot.index`, `snapshot.index`" -- **Impact:** Low — frozen indices used by clusters referencing removed operators for fee calculations. - -### ℹ️ DISC-OV-5: `declareOperatorFee` calls `ensureETHDefaults` but `reduceOperatorFee` does not -- **Source partition:** OV -- **FLOWS.md says:** No mention of `ensureETHDefaults` in either flow -- **Code does:** `SSVOperators.sol:106-108` — only `declareOperatorFee` calls it -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Design choice. Reducing a zero ETH fee would revert anyway. -- **Impact:** Low — functionally correct, no documentation change needed. - -### ℹ️ DISC-OV-6: `reduceOperatorFee` uses memory copy, `executeOperatorFee` uses storage directly -- **Source partition:** OV -- **FLOWS.md says:** Both describe same pattern -- **Code does:** Different gas profiles but functionally equivalent -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Gas optimization, both are correct. -- **Impact:** Low — no user-facing difference. - -### ℹ️ DISC-OV-7: `_bulkRemoveValidator` skips operators with `ethSnapshot.block == 0` -- **Source partition:** OV -- **FLOWS.md says:** (§1.3) "Update operator ETH snapshots" -- **Code does:** `OperatorLib.sol:267` — skips removed operators (block==0) -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Removed operators contribute frozen index, no snapshot update needed. -- **Impact:** Low — not contradicted by FLOWS.md high-level flow. - -### ✅ DISC-OV-8: `deposit` does NOT update operator snapshots or settle cluster fees -- **Source partition:** OV / CM (duplicate finding) -- **Original FLOWS.md claim:** (§1.4) "1. Update operator snapshots, 2. Settle cluster fees, 3. Add deposit" -- **Code does:** `SSVClusters.sol:190-205` — only validates hash, adds balance, stores hash -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §1.7 State Mutations now correctly show: `1. cluster.balance += msg.value, 2. Update stored cluster hash` -- **Impact:** Medium — Tests must NOT expect fee settlement on deposit. Fees settle on next state change. - -### ✅ DISC-OV-9: `deposit` does NOT check `cluster.active` -- **Source partition:** OV / CM (duplicate finding) -- **Original FLOWS.md claim:** (§1.4) "Cluster must be active" -- **Code does:** `SSVClusters.sol:190-205` — no active check -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §1.7 now explicitly notes: "deposits allowed on liquidated clusters" -- **Impact:** Low — depositing to liquidated cluster is permissive, sets up for reactivation. - -### ✅ DISC-CM-3: `withdraw` does NOT update operator snapshots to storage -- **Source partition:** CM -- **Original FLOWS.md claim:** (§1.5) "1. Update operator snapshots" -- **Code does:** `SSVClusters.sol:220-234` — reads operator indices inline without writing back -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §1.8 State Mutations omit operator snapshot updates, listing only cluster balance changes. -- **Impact:** HIGH for test design — operator earnings NOT updated during withdraw. Use `>=` in conservation checks. - -### ✅ DISC-CM-5: `reactivate` uses `cluster.balance += msg.value` (additive, not replacement) -- **Source partition:** CM -- **Original FLOWS.md claim:** (§1.11) `cluster.balance = msg.value` (implies replacement) -- **Code does:** `SSVClusters.sol:160` — `+=` adds to any pre-existing deposits -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §1.11 State Mutations updated to: `balance += msg.value` -- **Impact:** Medium — tests should verify deposit-into-liquidated + reactivate interaction (balance accumulates). - -### ℹ️ DISC-CM-6: Migration EB deviation only applied if `vUnitsCluster > baseline` -- **Source partition:** CM -- **FLOWS.md says:** (§2.1) Handles deviation -- **Code does:** `SSVClusters.sol:315-331` — only adds positive deviation -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — EB floor is 32 ETH so deviation can never be negative after migration. -- **Impact:** Low — correct behavior, no documentation ambiguity. - -### ℹ️ DISC-ES-1: `_syncFees` unconditionally updates `ethDaoBalance` and `ethDaoIndexBlockNumber` -- **Source partition:** ES -- **FLOWS.md says:** (§5.5) Only mentions case where new fees exist -- **Code does:** `SSVStaking.sol:182-184` — always sets these BEFORE checking if `current > previous` -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Must settle DAO to get consistent snapshot. -- **Impact:** Low — correct behavior. - -### ℹ️ DISC-ES-2: `_syncFees` handles `current <= previous` by updating `stakingEthPoolBalance` -- **Source partition:** ES -- **FLOWS.md says:** (§5.5) Only mentions positive fees case -- **Code does:** `SSVStaking.sol:187-189` — sets `stakingEthPoolBalance = current` when no new fees -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Keeps pool balance synced after claims. -- **Impact:** Low — edge case handling, correct. - -### ✅ DISC-ES-6: Operator deviation in `_updateOperatorVUnits` applies FULL delta to EACH operator -- **Source partition:** ES -- **Original FLOWS.md claim:** (§3.2) `operatorEthVUnits[opId] += (newVUnits - effectiveOldVUnits) / operatorCount` -- **Code does:** `SSVClusters.sol:496-515` — applies FULL delta to every operator, NOT divided -- **Resolution:** ✅ **RESOLVED** — FLOWS.md §3.2 now explicitly states with emphasis: "For each operator: `operatorEthVUnits[opId] += (newVUnits - effectiveOldVUnits)` — **full delta applied to every operator, no division by operator count**" -- **Impact:** HIGH — Each operator tracks the sum of deviations from ALL its clusters. Critical for correct earnings calculation. - -### ℹ️ DISC-CC-1: `removeOperator` does NOT delete `operatorFeeChangeRequests` -- **Source partition:** CC (cross-cutting finding) -- **FLOWS.md says:** (§4.2) "Delete fee change request (if any)" -- **Code does:** `SSVOperators.sol:71-93` — no explicit deletion -- **Resolution:** ℹ️ **IMPLEMENTATION DETAIL** — Harmless storage leak; `checkOwner` fails on subsequent attempts to execute. -- **Impact:** Low — minor storage leak, no functional impact. - ---- - -## Global Invariants (Check in EVERY cross-cutting test) - -1. **ETH Conservation**: `contract.ETH_balance ≈ Σ(current ETH cluster balances) + Σ(current operator ETH earnings) + ProtocolLib.networkTotalEarnings()` - -2. **SSV Conservation**: `contract.SSV_balance ≈ Σ(current SSV cluster balances) + Σ(current operator SSV earnings) + networkTotalEarningsSSV() + stakingHeldSSV` - -3. **Validator Count**: `sp.ethDaoValidatorCount == Σ(cluster.validatorCount)` across all active ETH clusters - -4. **vUnit Consistency**: `sp.daoTotalEthVUnits == sp.ethDaoValidatorCount × BPS_DENOMINATOR + Σ(cluster EB deviations)` - - Where deviation = `clusterEB.vUnits - validatorCount × BPS_DENOMINATOR` for explicit EB clusters - -5. **Cluster Hash Integrity**: `s.ethClusters[key] == keccak256(abi.encodePacked(validatorCount, networkFeeIndex, index, balance, active))` - -6. **cSSV Supply**: `cSSV.totalSupply() == Σ(staked SSV) - Σ(unstake-requested SSV)` - - Mint on stake, burn on requestUnstake - -7. **Accumulator Monotonicity**: `accEthPerShare` only increases, never decreases - -8. **Oracle Monotonicity**: `latestCommittedBlock` only increases - -9. **Cluster Version Exclusivity**: A cluster key exists in EITHER `s.clusters` OR `s.ethClusters`, never both - -10. **Operator Dual Tracking**: For each operator: `ethValidatorCount == Σ(validatorCount of active ETH clusters using this operator)` - ---- - -## Part 1: Operators + Validators - -### OV-1: Register Operator (Public, Non-Zero Fee) — Initial State Verification - -**Modules Touched:** SSVOperators -**Bug Class Covered:** Incorrect initialization, missing field defaults - -#### Preconditions -- No operators registered -- `sp.minimumOperatorEthFee` = 100_000 (packed: 1) -- `sp.operatorMaxFee` = packed value allowing up to 10 ETH/block - -#### Action Sequence -| Step | Action | Block | Expected State Change | -|------|--------|-------|----------------------| -| 1 | `registerOperator(pubkey, 1_770_000_000, false)` | 100 | Creates operator ID 1 | - -#### Assertions -- [ ] `operator[1].owner == msg.sender` -- [ ] `operator[1].ethFee == PackedETH.wrap(17_700)` (= 1_770_000_000 / 100_000) -- [ ] `operator[1].ethSnapshot.block == 100` -- [ ] `operator[1].ethSnapshot.index == 0` -- [ ] `operator[1].ethSnapshot.balance == PackedETH.wrap(0)` -- [ ] `operator[1].validatorCount == 0` -- [ ] `operator[1].ethValidatorCount == 0` -- [ ] `operator[1].fee == PackedSSV.wrap(0)` (no SSV fee for new operators) -- [ ] `operator[1].snapshot.block == 0` (SSV snapshot NOT initialized) -- [ ] `operator[1].whitelisted == false` -- [ ] `s.operatorsPKs[keccak256(pubkey)] == 1` -- [ ] `s.lastOperatorId.current() == 1` -- [ ] Event: `OperatorAdded(1, msg.sender, pubkey, 1_770_000_000)` -- [ ] Event: `OperatorPrivacyStatusUpdated([1], false)` (per DISC-OV-1) - -#### Edge Variations -- Fee = 0: succeeds, `ethFee == PackedETH.wrap(0)`. Can NEVER increase fee. -- `setPrivate = true`: `whitelisted == true`, event with `true`. -- Same pubkey again: revert `OperatorAlreadyExists`. -- Fee not divisible by 100_000: revert `MaxPrecisionExceeded`. - ---- - -### OV-2: Register Operator (Private, Zero Fee) — Free Operator Constraints - -**Modules Touched:** SSVOperators - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | `registerOperator(pubkey, 0, true)` | 100 | -| 2 | `declareOperatorFee(1, 500_000)` | 200 | - -#### Assertions -- [ ] Step 1: `operator[1].ethFee == PackedETH.wrap(0)`, `whitelisted == true` -- [ ] Step 2: Reverts `FeeIncreaseNotAllowed` (SSVOperators.sol:115) - ---- - -### OV-3: ensureETHDefaults — Critical Default Fee Assignment - -**Modules Touched:** OperatorLib - -#### Preconditions -- Legacy operator with SSV fee > 0, `ethSnapshot.block == 0`, `ethFee == PackedETH.wrap(0)` - -#### Assertions after first ETH interaction at block 200 -- [ ] `operator.ethFee == PackedETH.wrap(17_700)` (DEFAULT_OPERATOR_ETH_FEE / ETH_DEDUCTED_DIGITS) -- [ ] `operator.ethSnapshot.block == 200` -- [ ] `operator.ethSnapshot.balance == PackedETH.wrap(0)` - -#### Edge Variations -- Legacy operator with SSV fee = 0: ethFee stays 0 (free operator stays free in ETH) -- Already ETH-initialized: no-op - ---- - -### OV-4: Register Validator — New Cluster with 4 Public Operators - -**Modules Touched:** SSVValidators, SSVOperators (via OperatorLib) - -#### Preconditions -- 4 legacy operators (IDs 1-4) with SSV fee > 0, not yet ETH-initialized -- `sp.ethNetworkFee = PackedETH.wrap(35_509)` - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | `registerValidator{value: 10 ETH}(pubkey, [1,2,3,4], shares, emptyCluster)` | 200 | -| 2 | Advance 100 blocks | 300 | - -#### Assertions After Step 1 (block 200) -- [ ] Each `operator[1..4].ethFee == PackedETH.wrap(17_700)` -- [ ] Each `operator[1..4].ethValidatorCount == 1` -- [ ] Each `operator[1..4].ethSnapshot.block == 200` -- [ ] `sp.ethDaoValidatorCount == 1` -- [ ] `sp.daoTotalEthVUnits == 10_000` -- [ ] `cluster.validatorCount == 1`, `cluster.balance == 10e18`, `cluster.active == true` - -#### Assertions After Step 2 (block 300, after triggering snapshot update) -Per operator earnings (100 blocks): -- `blockDiffEthFee = 100 * 17_700 = 1_770_000` -- `effectiveVUnits = 0 + 1 * 10_000 = 10_000` -- `delta = (1_770_000 * 10_000) / 10_000 = 1_770_000` -- [ ] Each `operator[1..4].ethSnapshot.balance == PackedETH.wrap(1_770_000)` → `177_000_000_000 wei` - -Cluster balance after 100 blocks: -- `operatorIndexDelta = 4 * 1_770_000 = 7_080_000` -- `networkFeeIndexDelta = 100 * 35_509 = 3_550_900` -- `vUnits = 10_000` -- `operatorFeeUnits = (7_080_000 * 10_000) / 10_000 = 7_080_000` -- `networkFeeUnits = (3_550_900 * 10_000) / 10_000 = 3_550_900` -- `totalUsageWei = (7_080_000 + 3_550_900) * 100_000 = 1_063_090_000_000` -- [ ] `cluster.balance == 10e18 - 1_063_090_000_000 = 9_999_998_936_910_000_000` - ---- - -### OV-5: Register Validator — Existing Cluster with Fee Settlement - -**Modules Touched:** SSVValidators, ClusterLib, OperatorLib - -#### Preconditions -- 4 operators, ETH-initialized at block 200, `ethFee = PackedETH.wrap(17_700)` -- Cluster with 1 validator, `balance == 10 ETH`, created at block 200 - -#### Action at block 250: Register 2nd validator with 5 ETH deposit -- Settles 50 blocks of fees at 1-validator rate -- `cluster.balance = 15e18 - 531_545_000_000 = 14_999_999_468_455_000_000` -- Each operator `ethValidatorCount == 2` - ---- - -### OV-6–OV-35: [Remaining OV Scenarios] - -*See `docs/scenarios/operators-validators.md` for the complete detailed scenarios OV-6 through OV-35, covering:* -- OV-6: Private operator whitelist enforcement -- OV-7: Bulk register validators -- OV-8–9: Remove validator (fee settlement, last validator) -- OV-10: Full validator lifecycle (register→advance→remove→withdraw) -- OV-11–12: Fee declaration/execution/reduction with timelock -- OV-13: Operator earnings accumulation with vUnit deviation -- OV-14: Remove operator — full cleanup and final withdrawal -- OV-15: Fee change during active cluster — no gap/double-count -- OV-16: Multi-cluster operator earnings -- OV-17: Operator removal after all validators removed -- OV-18: Combined ETH + SSV withdrawal -- OV-19–21: Revert cases (register, remove, operator remove) -- OV-22: Same-block register and remove -- OV-23: ensureETHDefaults with zero SSV fee -- OV-24: Precision loss in operator earnings -- OV-25: Cluster balance underflow protection -- OV-26: Exit validator (signal only) -- OV-27: DAO network fee earnings consistency -- OV-28: Operator index frozen after removal -- OV-29: Concurrent fee changes on multiple operators -- OV-30: Operator registration then immediate validator registration -- OV-31: 13-operator cluster gas and correctness -- OV-32: Validator registration with explicit EB -- OV-33: Validator removal with explicit EB — deviation cleanup -- OV-34: Bulk remove validators -- OV-35: Deposit and withdraw — no side effects on operator state - ---- - -## Part 2: Clusters + Migration - -### CM-1: ETH Cluster Lifecycle — Create, Deposit, Advance, Withdraw - -**Modules Touched:** SSVValidators, SSVClusters, ClusterLib, OperatorLib, ProtocolLib - -#### Preconditions -- 4 operators, each `ethFee = 1_000_000_000` (packed raw = 10_000) -- Network fee: raw = 5_000 -- `minimumBlocksBeforeLiquidation = 100` - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | Register validator, 10 ETH | B0 | -| 2 | Deposit 5 ETH | B0+50 | -| 3 | Withdraw 2 ETH | B0+100 | - -#### Assertions -- Step 2: `cluster.balance = 10e18 + 5e18 = 15e18` (NO fee settlement per DISC-OV-8) -- Step 3: Fees settled for 100 blocks: - - `operatorFeeUnits = (4_000_000 * 10_000) / 10_000 = 4_000_000` - - `networkFeeUnits = (500_000 * 10_000) / 10_000 = 500_000` - - `totalFees = (4_000_000 + 500_000) * 100_000 = 450_000_000_000` - - `balanceAfterFees = 15e18 - 450_000_000_000` - - `balanceAfterWithdraw = balanceAfterFees - 2e18 = 12_999_999_550_000_000_000` - ---- - -### CM-2: Withdraw Exactly To Liquidation Threshold (Boundary) - -**Bug Class:** Off-by-one in `<` vs `<=` boundary - -#### Key Assertion -- `isLiquidatableWithEB` uses `cluster.balance < liquidationThreshold` (strict less-than) -- `balance == threshold` → NOT liquidatable → withdrawal succeeds -- `balance == threshold - 1` → liquidatable → withdrawal reverts `InsufficientBalance` - ---- - -### CM-3: Third-Party Liquidation With Bounty Verification - -#### Preconditions -- 1 validator, deposit = 1e12 wei, per-block burn = 4_500_000_000 - -#### Assertions at block B0+123 (liquidatable): -- `balanceAfterFees = 1e12 - 553_500_000_000 = 446_500_000_000` -- `threshold = 450_000_000_000` -- `446_500_000_000 < 450_000_000_000` → liquidatable -- [ ] Liquidator receives exactly 446_500_000_000 wei -- [ ] `cluster.active == false`, `cluster.balance == 0` -- [ ] Operator `ethValidatorCount` decremented BEFORE balance zeroed (per DISC-CM-4) - ---- - -### CM-4–CM-30: [Remaining CM Scenarios] - -*See `docs/scenarios/clusters-migration.md` for complete detailed scenarios CM-4 through CM-30, covering:* -- CM-4: SSV self-liquidation with SSV balance return -- CM-5: Basic SSV→ETH migration with SSV refund -- CM-6: Migration of liquidated SSV cluster -- CM-7: Migration with mixed operator ETH state -- CM-8: Post-migration ETH fee accrual -- CM-9: Reactivation after liquidation -- CM-10: Deposit into liquidated cluster + reactivation -- CM-11: SSV blocked operations verification -- CM-12: Explicit EB fee scaling -- CM-13: Migration with EB deviation sync -- CM-14: Liquidation with EB deviation cleanup -- CM-15: Auto-liquidation via updateClusterBalance -- CM-16: Conservation law — multi-cluster ETH balance tracking -- CM-17: SSV fee accrual precision -- CM-18: SSV refund after extended accrual -- CM-19: Withdraw from empty cluster (validatorCount == 0) -- CM-20: Reactivation with explicit EB deviation restoration -- CM-21: Liquidation boundary (`<` not `<=`) -- CM-22: Migration with removed operator -- CM-23: Withdraw doesn't update operator snapshots -- CM-24: Packing precision enforcement -- CM-25: updateClusterBalance on SSV cluster (EB snapshot only) -- CM-26: Liquidation bounty = post-settlement balance -- CM-27: DAO earnings settlement during migration -- CM-28: Multiple migrations — same operators -- CM-29: Migration with insufficient ETH (boundary) -- CM-30: Full end-to-end lifecycle with conservation proof - ---- - -## Part 3: Effective Balance + Staking - -### ES-1: Single Oracle Commit — Below Quorum - -**Modules Touched:** SSVDAO - -#### Preconditions -- 4 oracles, `quorumBps = 7500`, `cSSV.totalSupply() = 40e9` - -#### Assertions -- `weight = 40e9 / 4 = 10e9` -- `threshold = 40e9 * 7500 / 10_000 = 30e9` -- `10e9 < 30e9` → quorum NOT reached -- [ ] `ebRoots[100] == bytes32(0)`, `latestCommittedBlock` unchanged - ---- - -### ES-2: Quorum Reached — 3 of 4 Oracles - -#### Assertions -- 3 oracles vote → accumulated = 30e9 = threshold → quorum reached -- [ ] `ebRoots[100] == rootA`, `latestCommittedBlock == 100` -- [ ] `rootCommitments[commitKey] == 0` (deleted) -- [ ] `hasVoted` preserved (prevents re-voting) - ---- - -### ES-6: First EB Update — Implicit to Explicit (Same vUnits) - -#### Preconditions -- 2 validators, implicit vUnits = 20_000, EB update to 64 ETH - -#### Key Assertion -- `newVUnits = ebToVUnits(64) = ceil(64 * 10_000 / 32) = 20_000` -- `effectiveOldVUnits = 20_000` (implicit = validatorCount * BPS_DENOMINATOR) -- `newVUnits == effectiveOldVUnits` → NO deviation change -- [ ] Cluster now has explicit EB, future updates use stored value as baseline - ---- - -### ES-7: EB Increase — Higher Fee Burn Rate - -#### Preconditions -- 2 validators, prior explicit vUnits = 20_000, update to 96 ETH at block 300 - -#### Assertions -- `newVUnits = 30_000` -- Fee settlement uses OLD vUnits (20_000) for blocks 200-300 -- After: each `operatorEthVUnits[i] += 10_000` (FULL delta per operator, per DISC-ES-6) -- Future fees scale at 1.5× rate (30_000 / 20_000) - ---- - -### ES-9: Auto-Liquidation on EB Increase - -#### Key Flow -- Cluster balance just above threshold at 20_000 vUnits -- EB doubles to 40_000 vUnits → threshold doubles → cluster liquidatable -- `_liquidateAfterEBUpdateIfNeeded` triggers auto-liquidation -- Bounty goes to caller of `updateClusterBalance` (not cluster owner) - ---- - -### ES-15: Basic Stake → Earn → Claim Cycle - -#### Preconditions -- 1 cluster with 1 validator generating network fees -- User stakes 10e18 SSV at block 1000 - -#### Assertions -- Pre-stake fees (blocks 0-1000) are NOT claimable (totalSupply was 0) -- User earns only blocks 1000-1100 fees -- `accEthPerShare += (newFeesWei * 1e18) / 10e18` -- Payout truncated to nearest 100_000 wei (dust stays in accrued) - ---- - -### ES-17: Stake Timing — Late Joiner - -#### Steps -- User A stakes 10e18 SSV at block 0 -- User B stakes 30e18 SSV at block 50 -- Both claim at block 100 - -#### Math with f = wei/block: -- A: `62.5f` (100% of blocks 0-50 + 25% of blocks 50-100) -- B: `37.5f` (75% of blocks 50-100) -- Sum = 100f = total fees - ---- - -### ES-3–ES-32: [Remaining ES Scenarios] - -*See `docs/scenarios/eb-staking.md` for complete detailed scenarios covering:* -- ES-3: Conflicting oracle roots -- ES-4: Oracle replacement mid-vote -- ES-5: Oracle revert cases -- ES-8: EB decrease -- ES-10: Fee settlement uses OLD vUnits (no gap proof) -- ES-11: Operator vUnit tracking across multiple clusters -- ES-12: EB limits enforcement (min/max) -- ES-13: Merkle proof verification -- ES-14: Update frequency and staleness -- ES-16: Multiple stakers — pro-rata distribution -- ES-18: Unstake request → cooldown → withdraw -- ES-19: cSSV transfer settles rewards -- ES-20: Accumulator edge cases (zero supply, monotonicity, dust) -- ES-21: MAX_PENDING_REQUESTS (10) -- ES-22: MINIMAL_STAKING_AMOUNT -- ES-23: syncFees() public function -- ES-24: EB increase → higher staking rewards -- ES-25: Auto-liquidation reduces staking revenue -- ES-26: EB update on SSV cluster (snapshot only) -- ES-27–28: Full staking reward math with precision -- ES-29: requestUnstake + immediate claim -- ES-30: cSSV transfer — mint/burn do NOT trigger hook -- ES-31: Staking with pre-existing DAO balance -- ES-32: EB update → syncFees full chain trace - ---- - -## Part 4: Cross-Cutting Flows - -These scenarios test interactions between 3+ modules that no individual partition test can cover. - ---- - -### CC-1: Full Economic Conservation Law - -**Modules Touched:** SSVOperators, SSVValidators, SSVClusters, SSVDAO, SSVStaking, ProtocolLib -**Bug Class Covered:** Value creation/destruction — the master invariant - -#### Preconditions -- 4 operators registered at block 0 with `ethFee = 2_000_000_000` (packed = 20_000) -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` (= 1_000_000_000 wei/block) -- 1 staker with 10e18 SSV staked → 10e18 cSSV - -#### Action Sequence -| Step | Action | Block | ETH In/Out | -|------|--------|-------|------------| -| 1 | Register validator, 10 ETH deposit | 100 | +10 ETH | -| 2 | Register 2nd validator, 5 ETH deposit | 200 | +5 ETH | -| 3 | Advance 100 blocks | 300 | — | -| 4 | Withdraw 1 ETH from cluster | 300 | -1 ETH | -| 5 | Operator 1 withdraws all ETH earnings | 300 | -op1_earnings ETH | - -#### Conservation Check at Each Step - -**After Step 1 (block 100):** -- Contract ETH = 10 ETH -- Cluster balance (stored) = 10 ETH -- Operator earnings (stored) = 0 (just initialized) -- DAO earnings (stored) = 0 -- Staking pool = 0 -- **10e18 == 10e18 + 0 + 0 + 0** ✓ - -**After Step 3 (block 300, before any withdrawals):** -- Contract ETH = 15 ETH (10 + 5 deposited, nothing withdrawn) -- All fees are "pending" — cluster stored balance is still at 15e18 (deposit didn't settle fees) -- Operator stored earnings = 0 (operators haven't been snapshot-updated since step 2) - -But the invariant uses STORED values: -- `contract.ETH (15e18) >= cluster.stored_balance (15e18) + Σ(op.stored_earnings) (0) + stored_DAO_earnings (0) + staking_pool (0)` -- `15e18 >= 15e18` ✓ - -**After Step 4 (block 300, withdraw settles cluster fees):** -- Withdraw triggers fee settlement for the cluster -- Cluster balance = 15e18 - totalFees - 1e18 -- Fees computed inline, NOT written to operator storage (per DISC-CM-3) -- Contract ETH = 15e18 - 1e18 = 14e18 - -Check: -- `14e18 >= cluster.new_stored_balance + Σ(op.stored_earnings=0) + stored_DAO_earnings + staking_pool` -- The gap between contract.ETH and stored values = unsettled operator/DAO earnings -- This is why the invariant uses `>=` not `==` - -**After Step 5 (block 300, operator withdrawal):** -- `withdrawAllOperatorEarnings(1)` calls `updateSnapshotSt` → settles operator 1 earnings -- Operator 1 earnings for blocks 100-300 (200 blocks): - - Blocks 100-200: 1 validator → effectiveVUnits = 10_000 - - `delta = (100 * 20_000 * 10_000) / 10_000 = 2_000_000` - - Blocks 200-300: 2 validators → effectiveVUnits = 20_000 - - `delta = (100 * 20_000 * 20_000) / 10_000 = 4_000_000` - - Total: `6_000_000` packed → `600_000_000_000 wei` -- Contract ETH = 14e18 - 600_000_000_000 - -#### Master Conservation Formula -At any settled point: -``` -contract.ETH_balance == Σ(active_cluster.stored_balance) - + Σ(operator.ethSnapshot.balance_unpacked) - + sp.ethDaoBalance_unpacked - + staking_pool_balance - + precision_dust (≥ 0) -``` - -Assertions: -- [ ] Conservation holds after EVERY step (with `>=`) -- [ ] After ALL earnings are withdrawn and settled, conservation holds with `==` (modulo precision dust) -- [ ] Precision dust never exceeds `N_operations * ETH_DEDUCTED_DIGITS` (each operation can lose at most 99_999 wei) - ---- - -### CC-2: Register → Advance → Verify Full Economics (Exact Numbers) - -**Modules Touched:** SSVValidators, SSVClusters, SSVOperators, ProtocolLib -**Bug Class Covered:** End-to-end fee accounting correctness - -#### Preconditions -- 4 operators (IDs 1-4), public, registered at block 0 with `ethFee = 2_000_000_000` (packed = 20_000) -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` (= 1_000_000_000 wei/block) -- `sp.ethNetworkFeeIndex = 0`, `sp.ethNetworkFeeIndexBlockNumber = 0` - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | `registerValidator{value: 10 ETH}(pk, [1,2,3,4], shares, emptyCluster)` | 100 | -| 2 | Advance 100 blocks | 200 | -| 3 | Trigger full settlement (e.g., `removeValidator` or explicit `withdraw(0)`) | 200 | - -#### Exact Math After 100 Blocks (Step 3) - -**Each operator's ETH earnings:** -- `blockDiffEthFee = 100 * 20_000 = 2_000_000` -- `effectiveVUnits = 0 + 1 * 10_000 = 10_000` -- `delta = (2_000_000 * 10_000) / 10_000 = 2_000_000` -- Each operator earns: `2_000_000 * 100_000 = 200_000_000_000 wei` -- 4 operators total: `800_000_000_000 wei` - -**Cluster balance deduction:** -- `operatorIndexDelta = 4 * 2_000_000 = 8_000_000` -- `networkFeeIndexDelta = 100 * 10_000 = 1_000_000` -- `vUnits = 10_000` -- `operatorFeeUnits = (8_000_000 * 10_000) / 10_000 = 8_000_000` -- `networkFeeUnits = (1_000_000 * 10_000) / 10_000 = 1_000_000` -- `totalFees = (8_000_000 + 1_000_000) * 100_000 = 900_000_000_000` -- `cluster.balance = 10e18 - 900_000_000_000 = 9_999_999_100_000_000_000` - -**DAO ETH earnings (network fee portion):** -- `networkTotalEarnings = ethDaoBalance + (blockDiff * networkFee * daoTotalEthVUnits) / BPS_DENOMINATOR` -- `= 0 + (100 * 10_000 * 10_000) / 10_000 = 1_000_000` packed -- `= 1_000_000 * 100_000 = 100_000_000_000 wei` - -**Conservation check:** -``` -cluster.balance = 9_999_999_100_000_000_000 -operator_earnings = 4 * 200_000_000_000 = 800_000_000_000 -DAO_earnings = 100_000_000_000 -Sum = 9_999_999_100_000_000_000 + 800_000_000_000 + 100_000_000_000 - = 10_000_000_000_000_000_000 = 10 ETH ✓ -``` - -#### Assertions -- [ ] Each operator earns exactly `200_000_000_000 wei` -- [ ] Cluster balance = `9_999_999_100_000_000_000` -- [ ] DAO earnings = `100_000_000_000 wei` -- [ ] Sum == 10 ETH (exact conservation, no precision loss in this case) - ---- - -### CC-3: Migration → Register → EB Update → Fee Change → Liquidation - -**Modules Touched:** SSVClusters, SSVValidators, SSVOperators, SSVDAO, OperatorLib, ClusterLib, ProtocolLib -**Bug Class Covered:** Multi-step state transitions with exact accounting at each phase - -#### Preconditions -- 4 operators (IDs 1-4), SSV fee > 0 (packed raw = 1_000), ETH not yet initialized -- SSV cluster: 2 validators, balance = 100e18 SSV, created at block 0 -- `sp.ssvNetworkFee` raw = 500 -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` (1e9 wei/block) -- `minimumBlocksBeforeLiquidation = 100` -- `DEFAULT_OPERATOR_ETH_FEE = 1_770_000_000` → packed = 17_700 - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | Migrate SSV cluster to ETH with `msg.value = 5 ETH` | 500 | -| 2 | Register 3rd validator, deposit 0 ETH | 600 | -| 3 | Oracle commits EB root, then `updateClusterBalance(EB=192)` | 700 | -| 4 | Operator 1 declares fee 2_000_000_000 (packed 20_000) | 700 | -| 5 | Operator 1 executes fee at block 800 (within timelock) | 800 | -| 6 | Advance until cluster approaches liquidation | ~5500 | -| 7 | Third-party liquidates | ~5500 | -| 8 | Operator 1 withdraws all earnings | 5500 | - -#### Step 1: Migration at block 500 - -**SSV fee settlement (500 blocks):** -- `operatorIndexDelta = 4 * 500 * 1_000 = 2_000_000` -- `networkFeeIndexDelta = 500 * 500 = 250_000` -- `usage_packed = 2_000_000 * 2 + 250_000 * 2 = 4_500_000` -- `usage_unpacked = 4_500_000 * 10_000_000 = 45_000_000_000_000` -- `ssvRefund = 100e18 - 45_000_000_000_000 = 99_999_955_000_000_000_000` -- [ ] Owner receives 99_999_955_000_000_000_000 SSV tokens - -**ETH cluster setup:** -- All 4 operators: `ensureETHDefaults()` → `ethFee = PackedETH.wrap(17_700)` -- `cluster.balance = 5e18`, `cluster.index = 0` (all operators are ETH-new) -- Each operator `ethValidatorCount = 2` -- `sp.ethDaoValidatorCount = 2`, `sp.daoTotalEthVUnits = 20_000` - -#### Step 2: Register 3rd validator at block 600 - -**Fee settlement (100 blocks at 2 validators):** -- Each operator: `blockDiffEthFee = 100 * 17_700 = 1_770_000`, `effectiveVUnits = 20_000` - - `delta = (1_770_000 * 20_000) / 10_000 = 3_540_000` -- `opIndexDelta = 4 * 1_770_000 = 7_080_000` -- `netIndexDelta = 100 * 10_000 = 1_000_000` -- `opFeeUnits = (7_080_000 * 20_000) / 10_000 = 14_160_000` -- `netFeeUnits = (1_000_000 * 20_000) / 10_000 = 2_000_000` -- `totalFees = (14_160_000 + 2_000_000) * 100_000 = 1_616_000_000_000` -- `cluster.balance = 5e18 - 1_616_000_000_000 = 4_999_998_384_000_000_000` -- After: `validatorCount = 3`, each operator `ethValidatorCount = 3` -- `sp.daoTotalEthVUnits = 30_000`, `sp.ethDaoValidatorCount = 3` - -#### Step 3: EB Update to 192 ETH at block 700 - -- `newVUnits = ebToVUnits(192) = ceil(192 * 10_000 / 32) = 60_000` -- `effectiveOldVUnits = 30_000` (implicit: 3 * 10_000) - -**Fee settlement (100 blocks at OLD vUnits = 30_000):** -- Each operator: `blockDiffEthFee = 100 * 17_700 = 1_770_000`, `effectiveVUnits = 0 + 3 * 10_000 = 30_000` - - `delta = (1_770_000 * 30_000) / 10_000 = 5_310_000` -- `opIndexDelta = 4 * 1_770_000 = 7_080_000` -- `netIndexDelta = 100 * 10_000 = 1_000_000` -- `opFeeUnits = (7_080_000 * 30_000) / 10_000 = 21_240_000` -- `netFeeUnits = (1_000_000 * 30_000) / 10_000 = 3_000_000` -- `totalFees = (21_240_000 + 3_000_000) * 100_000 = 2_424_000_000_000` -- `cluster.balance = 4_999_998_384_000_000_000 - 2_424_000_000_000 = 4_999_995_960_000_000_000` - -**vUnit update:** -- `deviation = 60_000 - 30_000 = 30_000` -- Each `operatorEthVUnits[i] += 30_000` (full delta per operator!) -- `sp.daoTotalEthVUnits += 30_000` → now 60_000 -- `ebSnapshot = {vUnits: 60_000, ...}` - -#### Steps 4-5: Fee change -- Operator 1 declares fee increase to 20_000 packed, executes at block 800 -- Earnings from 700-800 settled at OLD fee 17_700 before fee change - -#### Steps 6-7: Liquidation (approximate) -- New per-block burn with 60_000 vUnits: `burnRate = 4 * 17_700 + 1 * (20_000 - 17_700) = 72_600` (op1 at 20_000, others at 17_700) - - Actually, `burnRate` is the cumulativeFee for liquidation check, but vUnits scaling changes the threshold -- The cluster balance decreases until liquidatable -- Bounty = remaining balance after fee settlement - -#### Assertions -- [ ] SSV refund exact at step 1 -- [ ] ETH conservation at every step -- [ ] Fee settlement uses OLD vUnits before EB update -- [ ] Operator deviation = 30_000 per operator (full delta, not divided) -- [ ] Liquidation bounty is exact post-settlement balance -- [ ] After operator withdrawal, total withdrawn matches cumulative earnings - ---- - -### CC-4: Multi-Staker Revenue Distribution Through State Changes - -**Modules Touched:** SSVStaking, SSVClusters, ProtocolLib, CSSVToken -**Bug Class Covered:** Staking accumulator correctness across multiple phases - -#### Preconditions -- 1 ETH cluster: 1 validator, 4 operators at `ethFee = PackedETH.wrap(20_000)` -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` -- `sp.daoTotalEthVUnits = 10_000` - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | User A stakes 100e18 SSV | 0 | -| 2 | Advance 50 blocks | 50 | -| 3 | User B stakes 300e18 SSV | 50 | -| 4 | Advance 50 blocks | 100 | -| 5 | EB update doubles vUnits (64 ETH for 1 validator → vUnits = 20_000) | 100 | -| 6 | Advance 50 blocks | 150 | -| 7 | User A claims | 150 | -| 8 | User B claims | 150 | - -#### DAO Earnings Per Block - -**Phase 1 (blocks 0-50, vUnits = 10_000):** -- `earningsPerBlock (packed) = (1 * 10_000 * 10_000) / 10_000 = 10_000` -- `earningsPerBlock (wei) = 10_000 * 100_000 = 1_000_000_000` - -**Phase 2 (blocks 50-100, vUnits = 10_000):** -- Same: `1_000_000_000 wei/block` - -**Phase 3 (blocks 100-150, vUnits = 20_000):** -- `earningsPerBlock (packed) = (1 * 10_000 * 20_000) / 10_000 = 20_000` -- `earningsPerBlock (wei) = 20_000 * 100_000 = 2_000_000_000` - -#### Staking Math - -**At block 0 (User A stakes 100e18):** -- `_syncFees`: no prior fees (block 0). If `ethDaoBalance = 0` and `ethDaoIndexBlockNumber = 0`: - - `current = 0 + (0 * 10_000 * 10_000) / 10_000 = 0` - - No new fees → `accEthPerShare = 0` -- `userIndex[A] = 0` -- `cSSV.totalSupply() = 100e18` - -**At block 50 (User B stakes 300e18):** -- `_syncFees`: - - `current = 0 + (50 * 10_000 * 10_000) / 10_000 = 500_000` packed - - `previous = 0` - - `newFeesWei = 500_000 * 100_000 = 50_000_000_000` - - `accEthPerShare += (50_000_000_000 * 1e18) / 100e18 = 500_000_000` -- `_settle(B)`: `bal = 0` → no-op, `userIndex[B] = 500_000_000` -- Mint 300e18 cSSV → `totalSupply = 400e18` - -**At block 100 (EB update — `_syncFees` NOT called by updateClusterBalance, only by staking functions):** -- EB update modifies `daoTotalEthVUnits = 20_000` -- But `_syncFees` is NOT called here — stakers need to explicitly interact - -**At block 150 (User A claims):** -- `_syncFees`: - - DAO earnings from block 50 to 150: - - Blocks 50-100: `50 * 10_000 * 10_000 / 10_000 = 500_000` packed - - But wait: `updateDAOEarnings` was called at block 100 (during EB update's `updateDAOEthVUnits`) - - So `ethDaoBalance` at block 100 = `500_000 + 500_000 = 1_000_000` packed, `ethDaoIndexBlockNumber = 100` - - From block 100 to 150: `50 * 10_000 * 20_000 / 10_000 = 1_000_000` packed - - `current = 1_000_000 + 1_000_000 = 2_000_000` packed - - `previous = stakingEthPoolBalance = 500_000` (set at block 50) - - `packedNewFees = 2_000_000 - 500_000 = 1_500_000` - - `newFeesWei = 1_500_000 * 100_000 = 150_000_000_000` - - `accEthPerShare += (150_000_000_000 * 1e18) / 400e18 = 375_000_000` - - Total `accEthPerShare = 500_000_000 + 375_000_000 = 875_000_000` - -- `_settle(A)`: - - `bal = 100e18` (A's cSSV balance) - - `pending = (100e18 * (875_000_000 - 0)) / 1e18 = 87_500_000_000` - - `accrued[A] = 87_500_000_000` - -**User A's claimed rewards:** -- Phase 1 (blocks 0-50): A was sole staker → 100% of 50_000_000_000 = `50_000_000_000` -- Phase 2 (blocks 50-100): A has 100e18 / 400e18 = 25% of 50_000_000_000 = `12_500_000_000` -- Phase 3 (blocks 100-150): A has 25% of 100_000_000_000 = `25_000_000_000` -- Total A: `50_000_000_000 + 12_500_000_000 + 25_000_000_000 = 87_500_000_000` ✓ - -**At block 150 (User B claims):** -- `_syncFees`: no new blocks → no change -- `_settle(B)`: - - `pending = (300e18 * (875_000_000 - 500_000_000)) / 1e18 = 300 * 375_000_000 = 112_500_000_000` - - `accrued[B] = 112_500_000_000` - -**User B's claimed rewards:** -- Phase 2: B has 75% of 50_000_000_000 = `37_500_000_000` -- Phase 3: B has 75% of 100_000_000_000 = `75_000_000_000` -- Total B: `37_500_000_000 + 75_000_000_000 = 112_500_000_000` ✓ - -**Conservation:** `87_500_000_000 + 112_500_000_000 = 200_000_000_000` = total fees for 150 blocks ✓ - -#### Assertions -- [ ] User A gets exactly `87_500_000_000 wei` (100% of phase 1, 25% of phases 2+3) -- [ ] User B gets exactly `112_500_000_000 wei` (75% of phases 2+3) -- [ ] Sum = total DAO earnings for 150 blocks -- [ ] EB update at block 100 correctly doubles DAO earning rate from block 100 onward -- [ ] `accEthPerShare` only increases (monotonic) - ---- - -### CC-5: Operator Serving Multiple Clusters with Different EBs - -**Modules Touched:** SSVClusters, SSVOperators, OperatorLib, SSVStorageEB -**Bug Class Covered:** Operator vUnit deviation accumulation across clusters - -#### Preconditions -- Operator O (ID=1) serves: - - Cluster A: 2 validators, operators [1,2,3,4], registered at block 0 - - Cluster B: 3 validators, operators [1,2,3,4], registered at block 0 -- `ethFee = PackedETH.wrap(20_000)` (2e9 wei/block) for all operators -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` -- `operatorEthVUnits[1] = 0` initially - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | EB update Cluster A: 96 ETH (2 validators) → vUnits = 30_000 | 100 | -| 2 | EB update Cluster B: 128 ETH (3 validators) → vUnits = 40_000 | 100 | -| 3 | Advance 100 blocks | 200 | -| 4 | Liquidate Cluster A | 200 | -| 5 | Advance 100 blocks | 300 | - -#### Step 1: Cluster A EB update -- `effectiveOldVUnits = 2 * 10_000 = 20_000` (implicit) -- `newVUnits = ebToVUnits(96) = ceil(96 * 10_000 / 32) = 30_000` -- Deviation = `30_000 - 20_000 = 10_000` -- Each `operatorEthVUnits[i] += 10_000` -- O's `operatorEthVUnits[1] = 10_000` - -#### Step 2: Cluster B EB update -- `effectiveOldVUnits = 3 * 10_000 = 30_000` (implicit) -- `newVUnits = ebToVUnits(128) = ceil(128 * 10_000 / 32) = 40_000` -- Deviation = `40_000 - 30_000 = 10_000` -- Each `operatorEthVUnits[i] += 10_000` -- O's `operatorEthVUnits[1] = 10_000 + 10_000 = 20_000` - -#### Step 3: Operator earnings for 100 blocks (100-200) -- O's `ethValidatorCount = 2 + 3 = 5` -- `effectiveVUnits = 20_000 + 5 * 10_000 = 70_000` -- `blockDiffEthFee = 100 * 20_000 = 2_000_000` -- `delta = (2_000_000 * 70_000) / 10_000 = 14_000_000` -- O earns: `14_000_000 * 100_000 = 1_400_000_000_000 wei` - -#### Step 4: Liquidate Cluster A -- `updateClusterOperators` called → settles operator snapshots up to block 200 (already settled in step 3 calc) -- O's `ethValidatorCount -= 2` → `ethValidatorCount = 3` -- `_executeLiquidation`: - - `sp.updateDAO(false, 2)` → `sp.daoTotalEthVUnits -= 20_000` (baseline) - - `vUnitsCluster = 30_000`, `baseline = 20_000`, deviation = 10_000 - - `sp.daoTotalEthVUnits -= 10_000` (deviation) - - `operatorEthVUnits[1] -= 10_000` → now 10_000 - -#### Step 5: Earnings for blocks 200-300 (after liquidation) -- O's `ethValidatorCount = 3` (only Cluster B) -- `effectiveVUnits = 10_000 + 3 * 10_000 = 40_000` -- `delta = (2_000_000 * 40_000) / 10_000 = 8_000_000` -- O earns: `8_000_000 * 100_000 = 800_000_000_000 wei` - -#### Assertions -- [ ] After step 2: O's `operatorEthVUnits[1] == 20_000` (sum of both deviations) -- [ ] After step 2: O's `effectiveVUnits = 70_000` (20_000 deviation + 5 * 10_000 baseline) -- [ ] After step 4: O's `operatorEthVUnits[1] == 10_000` (Cluster A deviation removed) -- [ ] After step 4: O's `effectiveVUnits = 40_000` (10_000 deviation + 3 * 10_000) -- [ ] Earnings rate decreased correctly: 1.4e12/100 blocks → 0.8e12/100 blocks -- [ ] `sp.daoTotalEthVUnits` correctly tracks: started at 50_000, +20_000 (both deviations), -30_000 (liquidation) = 40_000 - ---- - -### CC-6: Staking Rewards Through Liquidation Event - -**Modules Touched:** SSVStaking, SSVClusters, ProtocolLib -**Bug Class Covered:** Clean transition of staking rewards when cluster count changes - -#### Preconditions -- 2 clusters: Cluster A (1 validator), Cluster B (1 validator) -- `sp.daoTotalEthVUnits = 20_000`, `sp.ethNetworkFee = PackedETH.wrap(10_000)` -- 1 staker with 10e18 cSSV -- `accEthPerShare = 0`, block 0 - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | Advance 100 blocks | 100 | -| 2 | Cluster A gets liquidated | 100 | -| 3 | Advance 100 blocks | 200 | -| 4 | Staker claims | 200 | - -#### Math - -**Phase 1 (blocks 0-100, 2 clusters active, daoTotalEthVUnits = 20_000):** -- `earningsPerBlock = (1 * 10_000 * 20_000) / 10_000 = 20_000` packed -- Total: `100 * 20_000 = 2_000_000` packed - -**At block 100 (liquidation):** -- `_executeLiquidation` → `sp.updateDAO(false, 1)`: - - `updateDAOEarnings(sp)` called FIRST: - - `sp.ethDaoBalance = 0 + (100 * 10_000 * 20_000) / 10_000 = 2_000_000` packed - - `sp.ethDaoIndexBlockNumber = 100` - - Then: `sp.ethDaoValidatorCount -= 1`, `sp.daoTotalEthVUnits -= 10_000` → now 10_000 - -**Phase 2 (blocks 100-200, 1 cluster active, daoTotalEthVUnits = 10_000):** -- `earningsPerBlock = (1 * 10_000 * 10_000) / 10_000 = 10_000` packed -- Total: `100 * 10_000 = 1_000_000` packed - -**At block 200 (staker claims):** -- `_syncFees`: - - `current = 2_000_000 + (100 * 10_000 * 10_000) / 10_000 = 2_000_000 + 1_000_000 = 3_000_000` packed - - `previous = 0` - - `newFeesWei = 3_000_000 * 100_000 = 300_000_000_000` - - `accEthPerShare += (300_000_000_000 * 1e18) / 10e18 = 30_000_000_000` -- `_settle(staker)`: - - `pending = (10e18 * 30_000_000_000) / 1e18 = 300_000_000_000` - -#### Assertions -- [ ] Staker receives `300_000_000_000 wei` total -- [ ] This equals: 100 blocks × 2e10/block + 100 blocks × 1e10/block = 2e12 + 1e12 = 3e11... wait - - `100 * 20_000 * 100_000 = 200_000_000_000` (phase 1) - - `100 * 10_000 * 100_000 = 100_000_000_000` (phase 2) - - Total = `300_000_000_000` ✓ -- [ ] DAO earnings settled at exact liquidation block (no gap) -- [ ] daoTotalEthVUnits decreased at liquidation → lower earning rate phase 2 -- [ ] No phantom rewards from liquidated cluster after block 100 -- [ ] `accEthPerShare` monotonically increases - ---- - -### CC-7: Migration Race — Two Clusters, Same Operators - -**Modules Touched:** SSVClusters, OperatorLib, ProtocolLib -**Bug Class Covered:** Operator ETH state correctness after sequential migrations - -#### Preconditions -- Operators 1-4: SSV fee > 0 (`fee = PackedSSV.wrap(1_000)`), no ETH state -- Cluster A: [1,2,3,4], 1 validator, balance = 50e18 SSV -- Cluster B: [1,2,3,4], 2 validators, balance = 80e18 SSV -- Both created at block 0 - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | Migrate Cluster A with 5 ETH | 100 | -| 2 | Migrate Cluster B with 10 ETH | 200 | - -#### Step 1: Migrate Cluster A - -**For each operator (in `updateClusterOperatorsMigration`):** -- SSV snapshot updated, `validatorCount -= 1` -- `ethSnapshot.block == 0` → `ensureETHDefaults()`: - - `ethSnapshot.block = 100`, `ethFee = PackedETH.wrap(17_700)` -- `ethValidatorCount += 1` → `ethValidatorCount = 1` -- `cumulativeIndexETH = 0` (newly initialized, index = 0) - -**Cluster A ETH state:** -- `cluster.index = 0`, `cluster.balance = 5e18` - -#### Step 2: Migrate Cluster B (100 blocks later) - -**For each operator:** -- SSV snapshot updated, `validatorCount -= 2` -- `ethSnapshot.block != 0` (set at block 100) → take `else` branch: - - `updateSnapshotSt(operator, id)`: - - `blockDiffEthFee = (200 - 100) * 17_700 = 1_770_000` - - `effectiveVUnits = 0 + 1 * 10_000 = 10_000` (1 validator from Cluster A) - - `delta = (1_770_000 * 10_000) / 10_000 = 1_770_000` - - `ethSnapshot.balance += PackedETH.wrap(1_770_000)` - - `ethSnapshot.index += 1_770_000` - - `cumulativeIndexETH += operator.ethSnapshot.index` (= 1_770_000 per operator) -- `ethValidatorCount += 2` → `ethValidatorCount = 3` -- `cumulativeFeeETH = 4 * 17_700 = 70_800` - -**Cluster B ETH state:** -- `cluster.index = 4 * 1_770_000 = 7_080_000` (non-zero! captures existing indices) -- `cluster.balance = 10e18` - -#### Assertions -- [ ] After step 1: each operator `ethValidatorCount == 1`, `ethSnapshot.block == 100` -- [ ] After step 1: NO `ensureETHDefaults()` needed at step 2 (already initialized) -- [ ] After step 2: each operator `ethValidatorCount == 3` (not double-counted) -- [ ] After step 2: Cluster B's `cluster.index == 7_080_000` (captures 100 blocks of earnings) -- [ ] After step 2: operators earned 100 blocks of fees from Cluster A's 1 validator -- [ ] No double-counting of validators across migrations - ---- - -### CC-8: cSSV Transfer Mid-Revenue-Accrual - -**Modules Touched:** CSSVToken, SSVStaking, ProtocolLib -**Bug Class Covered:** Transfer hook correctly settles both parties at pre-transfer balances - -#### Preconditions -- User A: 100e18 cSSV, User B: 0 cSSV -- 1 cluster generating network fees at `10_000` packed/block → `1_000_000_000 wei/block` -- `sp.daoTotalEthVUnits = 10_000` -- `accEthPerShare = 0`, block 0 - -#### Action Sequence -| Step | Action | Block | -|------|--------|-------| -| 1 | Revenue accrues 50 blocks | 50 | -| 2 | A transfers 50e18 cSSV to B | 50 | -| 3 | Revenue accrues 50 more blocks | 100 | -| 4 | A claims | 100 | -| 5 | B claims | 100 | - -#### Math - -**DAO earnings per block:** `(1 * 10_000 * 10_000) / 10_000 = 10_000` packed → `1_000_000_000 wei` - -**At block 50 (transfer triggers `onCSSVTransfer`):** -- `_syncFees`: - - `current = 50 * 10_000 = 500_000` packed - - `newFeesWei = 500_000 * 100_000 = 50_000_000_000` - - `accEthPerShare += (50_000_000_000 * 1e18) / 100e18 = 500_000_000` -- `_settle(A)`: - - `bal = cSSV.balanceOf(A) = 100e18` (PRE-TRANSFER balance!) - - `pending = (100e18 * 500_000_000) / 1e18 = 50_000_000_000` - - `accrued[A] = 50_000_000_000` - - `userIndex[A] = 500_000_000` -- `_settle(B)`: - - `bal = cSSV.balanceOf(B) = 0` (PRE-TRANSFER!) - - `pending = 0` - - `userIndex[B] = 500_000_000` -- Then ERC20 transfer: A has 50e18 cSSV, B has 50e18 cSSV - -**At block 100 (A claims):** -- `_syncFees`: - - `newFeesWei = 50_000_000_000` (50 more blocks) - - `accEthPerShare += (50_000_000_000 * 1e18) / 100e18 = 500_000_000` - - Total `accEthPerShare = 1_000_000_000` -- `_settle(A)`: - - `pending = (50e18 * (1_000_000_000 - 500_000_000)) / 1e18 = 25_000_000_000` - - `accrued[A] = 50_000_000_000 + 25_000_000_000 = 75_000_000_000` -- A's total = `75_000_000_000 wei` - -**At block 100 (B claims):** -- `_settle(B)`: - - `pending = (50e18 * (1_000_000_000 - 500_000_000)) / 1e18 = 25_000_000_000` - - `accrued[B] = 25_000_000_000` -- B's total = `25_000_000_000 wei` - -#### Assertions -- [ ] A gets 100% of first 50 blocks (`50_000_000_000`) + 50% of next 50 blocks (`25_000_000_000`) = `75_000_000_000` -- [ ] B gets 50% of next 50 blocks (`25_000_000_000`) -- [ ] Sum = `100_000_000_000` = total DAO earnings for 100 blocks ✓ -- [ ] `_beforeTokenTransfer` settles BEFORE balances change -- [ ] Transfer to B sets `userIndex[B] = accEthPerShare` → no retroactive earnings - ---- - -### CC-9: Governance Parameter Change Mid-Operation - -**Modules Touched:** SSVDAO, SSVClusters, SSVOperators, ProtocolLib -**Bug Class Covered:** Parameter changes applied at correct boundary - -#### Sub-scenario 9a: Network Fee Update - -**Preconditions:** -- Cluster with 1 validator, balance = 10 ETH, created at block 0 -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` initially -- 4 operators, `ethFee = PackedETH.wrap(20_000)` - -**Actions:** -| Step | Action | Block | -|------|--------|-------| -| 1 | Advance 100 blocks | 100 | -| 2 | Owner calls `updateNetworkFee(2_000_000_000)` → packed = 20_000 | 100 | -| 3 | Advance 100 blocks | 200 | -| 4 | Withdraw from cluster | 200 | - -**Network fee index calculation:** -- `updateNetworkFee` calls `updateDAOEarnings` → settles at old fee -- Then sets `sp.ethNetworkFee = PackedETH.wrap(20_000)` and `sp.ethNetworkFeeIndex = currentIndex` -- `currentIndex at block 100 = 0 + 100 * 10_000 = 1_000_000` -- After update: `ethNetworkFeeIndex = 1_000_000`, `ethNetworkFeeIndexBlockNumber = 100` - -**At block 200 withdraw:** -- `currentNetworkFeeIndex = 1_000_000 + (200 - 100) * 20_000 = 3_000_000` -- `networkFeeIndexDelta = 3_000_000 - cluster.networkFeeIndex_at_creation` - -If cluster was created at block 0 with `networkFeeIndex = 0`: -- Total delta = `3_000_000` -- This correctly represents: 100 blocks at 10_000 + 100 blocks at 20_000 = 1_000_000 + 2_000_000 - -#### Assertions -- [ ] Old fee used for blocks 0-100, new fee for blocks 100-200 -- [ ] Transition is seamless via network fee index accumulator -- [ ] DAO earnings settled at exact block of fee change - -#### Sub-scenario 9b: Liquidation Threshold Update - -**Preconditions:** -- Cluster at block 200, balance just above old threshold -- `minimumBlocksBeforeLiquidation = 200` → threshold = X -- Cluster balance = X + 1 wei - -**Actions:** -| Step | Action | Block | -|------|--------|-------| -| 1 | Owner updates `minimumBlocksBeforeLiquidation = 400` | 200 | -| 2 | Third-party tries to liquidate | 200 | - -**Assertions:** -- [ ] New threshold = 2 × old threshold (doubled blocks) -- [ ] Cluster that was safe is now liquidatable -- [ ] Liquidation succeeds immediately after parameter change - ---- - -### CC-10: Full System Lifecycle (End-to-End) - -**Modules Touched:** ALL modules -**Bug Class Covered:** Complete system correctness across full lifecycle - -#### Preconditions -- Empty system, block 0 -- `sp.ethNetworkFee = PackedETH.wrap(10_000)` (1e9 wei/block) -- `minimumBlocksBeforeLiquidation = 100` -- `declareOperatorFeePeriod = 100 seconds` -- `executeOperatorFeePeriod = 200 seconds` - -#### Action Sequence -| Step | Action | Block | Time | -|------|--------|-------|------| -| 1 | Register 4 operators with fee 2e9 (packed 20_000) | 10 | T0 | -| 2 | User A stakes 50e18 SSV | 20 | T1 | -| 3 | Register validator, 10 ETH deposit | 100 | T2 | -| 4 | Advance 100 blocks | 200 | T3 | -| 5 | Oracle commits EB root | 200 | T3 | -| 6 | `updateClusterBalance(EB=48 ETH, 1 validator)` | 200 | T3 | -| 7 | Advance 100 blocks | 300 | T4 | -| 8 | Operator 1 declares fee increase to 2.2e9 (packed 22_000) | 300 | T4 | -| 9 | Advance (past timelock), execute fee | 400 | T5 | -| 10 | Register 2nd validator, 0 deposit | 400 | T5 | -| 11 | Advance 100 blocks | 500 | T6 | -| 12 | User A claims staking rewards | 500 | T6 | -| 13 | Remove 1st validator | 500 | T6 | -| 14 | Advance 100 blocks | 600 | T7 | -| 15 | Withdraw remaining cluster balance | 600 | T7 | -| 16 | Remove operator (after removing all validators) | 600 | T7 | - -#### Key State Changes to Track - -**Step 6: EB Update to 48 ETH (1 validator)** -- `newVUnits = ebToVUnits(48) = ceil(48 * 10_000 / 32) = 15_000` -- `effectiveOldVUnits = 1 * 10_000 = 10_000` (implicit) -- Deviation = 5_000 -- Fee settlement for blocks 100-200 at OLD vUnits = 10_000 -- Then `operatorEthVUnits[1..4] += 5_000` each -- `sp.daoTotalEthVUnits = 10_000 + 5_000 = 15_000` - -**Step 9: Fee execution** -- Settles operator 1 earnings from block 200 to 400 at old fee 20_000 -- With `effectiveVUnits = 5_000 + 1 * 10_000 = 15_000` -- Then `ethFee` changes to 22_000 - -**Step 10: Register 2nd validator** -- EB snapshot has `vUnits = 15_000`, so: `ebSnapshot.vUnits += 1 * 10_000 = 25_000` -- `sp.daoTotalEthVUnits += 10_000` → now 25_000 -- Each operator `ethValidatorCount = 2` - -**Step 12: User A claims staking rewards** -- `_syncFees` gathers all DAO earnings from block 20 to 500 -- Multiple phases with different `daoTotalEthVUnits`: - - Blocks 20-100: vUnits = 0 (no cluster yet) → 0 earnings - - Blocks 100-200: vUnits = 10_000 → earnings rate 10_000 - - Blocks 200-300: vUnits = 15_000 (after EB update) → earnings rate 15_000 - - Blocks 300-400: vUnits = 15_000 → same - - Blocks 400-500: vUnits = 25_000 (after 2nd validator) → earnings rate 25_000 - -**Step 13: Remove 1st validator** -- EB snapshot: `vUnits = 25_000 - 10_000 = 15_000`, if `validatorCount == 1` - - If `validatorCount == 1` and `ebSnapshot.vUnits > 0`: deduct baseline - - Remaining deviation = `15_000 - 1 * 10_000 = 5_000` -- Each operator `ethValidatorCount = 1` - -**Step 16: Final verification** -After all operations: -- [ ] All cluster balances add up with all operator earnings and DAO earnings = total ETH deposited minus withdrawals -- [ ] All SSV staking rewards match DAO network fee earnings -- [ ] cSSV supply matches active stakes -- [ ] `ethDaoValidatorCount == Σ(operator.ethValidatorCount)` -- [ ] `daoTotalEthVUnits == ethDaoValidatorCount * 10_000 + Σ(deviations)` - ---- - -## Gap Analysis: Cross-Partition Findings - -### Finding 1: DISC-OV-8 and DISC-CM-1 are the same discrepancy (deposit doesn't settle fees) -Both OV and CM partitions independently discovered this. The scenarios are consistent: deposit is intentionally simple, and tests should NOT expect fee settlement on deposit. - -### Finding 2: DISC-OV-9 and DISC-CM-2 are the same discrepancy (deposit doesn't check active) -Same cross-partition duplication. Code is intentional. - -### Finding 3: Operator removal without validator count check (DISC-OV-3) has cross-module implications -This discrepancy affects the global invariant `ethDaoValidatorCount == Σ(operator.ethValidatorCount)`. If an operator with active validators is removed, the invariant breaks. However, the cluster's fee calculation still works because: -- The removed operator's index is frozen (DISC-OV-4) -- The cluster stops accruing fees for the removed operator -- **BUT**: `ethDaoValidatorCount` is NOT decremented, causing `daoTotalEthVUnits` to be overstated -- This means DAO earns MORE network fees than clusters actually pay → conservation law still holds (DAO overcounts) -- The excess is "phantom earnings" that no one can claim (clusters don't pay for the removed operator) -- **Impact on staking**: staking rewards would be slightly higher than actual fee revenue → potential insolvency of staking pool - -### Finding 4: `_updateOperatorVUnits` applies FULL deviation per operator (DISC-ES-6) -This is consistent with `_executeLiquidation` and `_bulkRemoveValidator` cleanup. The pattern is deliberate: each operator tracks the sum of deviations from ALL clusters it serves. OV-33 verified this is NOT a bug. Cross-partition consistency confirmed. - -### Finding 5: Withdraw not updating operator snapshots (DISC-CM-3) is NOT a partition-specific issue -This affects the conservation law: after a withdraw, stored operator balances are stale. The conservation law uses `>=` to handle this. Cross-cutting tests must account for this when checking exact balances. - -### Finding 6: Missing cross-module scenario — DAO earnings during staking claims -When a staker calls `claimEthRewards`, both `sp.ethDaoBalance` and `s.stakingEthPoolBalance` are decremented. If multiple stakers claim in sequence, each claim's `_syncFees` re-settles the DAO earnings. The `current <= previous` path (DISC-ES-2) handles the case where a claim reduces `ethDaoBalance` below `stakingEthPoolBalance`. - -### Finding 7: No partition tested the oracle-staking coupling -ES-5c noted that `cSSV.totalSupply() == 0` blocks oracle commits (`ZeroCSSVSupply`). This means: no staking → no EB updates → no explicit vUnit tracking. This coupling was identified but no cross-cutting scenario tests the full chain: stake → oracle commit → EB update → staking rewards increase. - ---- - -## Appendix: Cross-Module Interaction Map - -| Source Module | Target State | Write | Read | Key Functions | -|---|---|---|---|---| -| SSVClusters.liquidate | StorageProtocol | `daoTotalEthVUnits ±=`, `ethDaoBalance` | `ethNetworkFee`, `minimumBlocksBeforeLiquidation` | `updateDAO`, `_executeLiquidation` | -| SSVClusters.migrate | StorageProtocol + StorageEB | `updateDAO`, `daoTotalEthVUnits`, `operatorEthVUnits[]` | `currentNetworkFeeIndex()` | `updateClusterOperatorsMigration` | -| SSVClusters.updateEB | StorageProtocol + StorageEB | `updateDAOEthVUnits()`, `operatorEthVUnits[]`, `clusterEB[].vUnits` | `currentNetworkFeeIndex()` | `_applyClusterFeeUpdates`, `_updateOperatorVUnits` | -| SSVStaking._syncFees | StorageProtocol + StorageStaking | `ethDaoBalance`, `ethDaoIndexBlockNumber`, `accEthPerShare` | `networkTotalEarnings()` (reads `daoTotalEthVUnits`, `ethNetworkFee`) | `_syncFees` | -| SSVStaking.claim | StorageProtocol | `ethDaoBalance -= payout` | `ethDaoBalance`, `stakingEthPoolBalance` | `claimEthRewards` | -| OperatorLib.updateSnapshotSt | StorageEB | (read only) | `operatorEthVUnits[operatorId]` | `updateSnapshotSt` | -| ClusterLib.getVUnits | StorageEB | (read only) | `clusterEB[clusterId].vUnits` | `getVUnits`, `updateBalanceWithEB`, `isLiquidatableWithEB` | -| ProtocolLib.networkTotalEarnings | StorageProtocol | (read only, view) | `daoTotalEthVUnits`, `ethNetworkFee`, `ethDaoBalance` | Used by SSVStaking._syncFees | -| ProtocolLib.updateDAO | StorageProtocol | `ethDaoValidatorCount ±=`, `daoTotalEthVUnits ±=`, settles `ethDaoBalance` | implicit via updateDAOEarnings | Called by SSVClusters on register/liquidate/reactivate/migrate | - ---- - -## Appendix: Key Code References - -| Concept | File | Lines | -|---------|------|-------| -| registerValidator | SSVValidators.sol | 31-42 | -| removeValidator | SSVValidators.sol | 96-100 | -| deposit (ETH) | SSVClusters.sol | 190-205 | -| withdraw (ETH) | SSVClusters.sol | 210-260 | -| liquidate (ETH) | SSVClusters.sol | 35-69 | -| reactivate | SSVClusters.sol | 133-185 | -| migrateClusterToETH | SSVClusters.sol | 264-348 | -| updateClusterBalance | SSVClusters.sol | 353-423 | -| _applyClusterFeeUpdates | SSVClusters.sol | 463-494 | -| _updateOperatorVUnits | SSVClusters.sol | 496-515 | -| _liquidateAfterEBUpdateIfNeeded | SSVClusters.sol | 524-555 | -| _executeLiquidation | SSVClusters.sol | 557-617 | -| registerOperator | SSVOperators.sol | 28-66 | -| removeOperator | SSVOperators.sol | 71-93 | -| declareOperatorFee | SSVOperators.sol | 95-142 | -| executeOperatorFee | SSVOperators.sol | 144-169 | -| reduceOperatorFee | SSVOperators.sol | 181-198 | -| commitRoot | SSVDAO.sol | 155-200 | -| replaceOracle | SSVDAO.sol | 205-229 | -| stake | SSVStaking.sol | 41-61 | -| requestUnstake | SSVStaking.sol | 66-94 | -| claimEthRewards | SSVStaking.sol | 114-145 | -| onCSSVTransfer | SSVStaking.sol | 169-177 | -| _syncFees | SSVStaking.sol | 179-203 | -| _settle | SSVStaking.sol | 205-208 | -| _settleWithBalance | SSVStaking.sol | 210-224 | -| networkTotalEarnings | ProtocolLib.sol | 85-91 | -| updateDAO | ProtocolLib.sol | 108-120 | -| updateDAOEthVUnits | ProtocolLib.sol | 143-151 | -| updateSnapshotSt (ETH) | OperatorLib.sol | 52-72 | -| ensureETHDefaults | OperatorLib.sol | 142-153 | -| updateClusterOperators | OperatorLib.sol | 253-282 | -| updateClusterOperatorsMigration | OperatorLib.sol | 367-411 | -| ebToVUnits | ClusterLib.sol | 353-358 | -| vUnitsToEB | ClusterLib.sol | 365-367 | -| getVUnits | ClusterLib.sol | 277-289 | -| updateBalanceWithEB | ClusterLib.sol | 298-313 | -| isLiquidatableWithEB | ClusterLib.sol | 67-84 | -| _beforeTokenTransfer | CSSVToken.sol | 26-30 | diff --git a/docs/SIMULATION-DESIGN.md b/docs/SIMULATION-DESIGN.md deleted file mode 100644 index a54645bd..00000000 --- a/docs/SIMULATION-DESIGN.md +++ /dev/null @@ -1,500 +0,0 @@ -# Simulation Design: SSV Network v2.0.0 Monte Carlo Upgrade Simulation - -Research findings and architecture design for a fork-based Monte Carlo simulation -that stress-tests the v2.0.0 upgrade (ETH payments, effective balance accounting, -SSV staking) under realistic mainnet conditions. - ---- - -## R-1: Oracle Quorum Mechanics - -### `commitRoot` Signature - -```solidity -function commitRoot(bytes32 merkleRoot, uint64 blockNum) external; -``` - -**Source:** `contracts/interfaces/ISSVDAO.sol:203` - -### How `commitRoot` Works - -**Source:** `contracts/modules/SSVDAO.sol:155-200` - -1. **Caller validation:** `s.oracleIdOf[msg.sender] != 0` (reverts `NotOracle`) -2. **Monotonicity:** `blockNum > seb.latestCommittedBlock` (reverts `StaleBlockNumber`) -3. **Not future:** `blockNum <= block.number` (reverts `FutureBlockNumber`) -4. **Weight source:** `totalStaked = ICSSVToken(CSSV_ADDRESS).totalSupply()` must be > 0 (reverts `OracleHasZeroWeight`) -5. **Commitment key:** `keccak256(abi.encodePacked(blockNum, merkleRoot))` ties block+root together -6. **Double-vote guard:** `seb.hasVoted[commitmentKey][oracleId]` must be false (reverts `AlreadyVoted`) -7. **Weight accumulation:** Each oracle has equal weight = `totalStaked / defaultOracleIds.length` -8. **Quorum check:** `accumulatedWeight >= (totalStaked * quorumBps) / 10_000` - - If met: stores `seb.ebRoots[blockNum] = merkleRoot`, updates `latestCommittedBlock`, emits `RootCommitted` - - If not met: emits `WeightedRootProposed` - -### How Unit Tests Simulate Oracle Quorum - -**Source:** `test/unit/SSVDAO/commitRoot.test.ts` - -Tests use a **harness contract** (`SSVDAOHarness`) with mock helper functions: -- `dao.mockSetOracle(oracleId, address)` — registers oracle addresses -- `dao.mockSetQuorumBps(bps)` — sets quorum threshold -- `dao.mockSetLatestCommittedBlock(blockNum)` — sets committed block -- `cssv.mint(owner, totalSupply)` — mints cSSV tokens (needed for oracle weight calculation) - -The tests call `dao.connect(oracleN).commitRoot(merkleRoot, blockNum)` from each oracle signer sequentially until quorum is reached. - -### Can We Impersonate Oracles on Fork? - -**Yes.** The fork fixture (`test/setup/fixtures.ts:344-346`) already does this: - -```typescript -await ethers.provider.send("hardhat_impersonateAccount", [ForkConfig.DAO_ADDRESS]); -const daoSigner = await ethers.getSigner(ForkConfig.DAO_ADDRESS); -await ethers.provider.send("hardhat_setBalance", [ForkConfig.DAO_ADDRESS, "0x..."]); -``` - -**Mainnet oracle addresses** from `deployments/mainnet-upgrade.config.json`: -```json -{ - "1": "0x6b6fa15717beeb5a40fac6610c3e92776037a30e", - "2": "0x01E7e108eD97B4EA08e1a184aBA793b9D282E565", - "3": "0xef6d2263a1d96eac2a4530ba327bcc2e6c948feb", - "4": "0xFe33f6cb66ee2A85748458556D6ccEC3716D2173" -} -``` - -We can impersonate 3 of 4 oracles and call `commitRoot` to meet the 75% quorum. - -**Important prerequisite:** cSSV `totalSupply` must be > 0 before calling `commitRoot`. On a fresh fork (pre-upgrade), no one has staked yet, so we must first: -1. Deploy + upgrade the contracts (via the fork fixture) -2. Stake SSV tokens to mint cSSV (or `hardhat_setStorageAt` to fake totalSupply) -3. Then call `commitRoot` from impersonated oracles - ---- - -## R-2: View Functions for Invariant Checking - -### Complete View Function Inventory - -**Source:** `contracts/interfaces/ISSVViews.sol`, `contracts/modules/SSVViews.sol` - -| Function | Returns | Purpose | -|---|---|---| -| `getValidator(address, bytes)` | `bool` | Is validator active? | -| `getOperatorFee(uint64)` | `uint256` | Operator ETH fee | -| `getOperatorFeeSSV(uint64)` | `uint256` | Operator SSV fee (legacy) | -| `getOperatorDeclaredFee(uint64)` | `OperatorDeclaredFeeData` | Pending fee change | -| `getOperatorById(uint64)` | `OperatorData` | Full operator details (ETH) | -| `getOperatorByIdSSV(uint64)` | `OperatorData` | Full operator details (SSV) | -| `getWhitelistedOperators(uint64[], address)` | `uint64[]` | Which ops whitelist an address | -| `isLiquidatable(owner, operatorIds, cluster)` | `bool` | ETH cluster liquidatable? | -| `isLiquidatableSSV(owner, operatorIds, cluster)` | `bool` | SSV cluster liquidatable? | -| `isLiquidated(owner, operatorIds, cluster)` | `bool` | Cluster already liquidated? | -| `getBurnRate(owner, operatorIds, cluster)` | `uint256` | ETH cluster burn rate | -| `getBurnRateSSV(owner, operatorIds, cluster)` | `uint256` | SSV cluster burn rate | -| `getOperatorEarnings(uint64)` | `uint256` | Operator ETH earnings | -| `getOperatorEarningsSSV(uint64)` | `uint256` | Operator SSV earnings | -| `getBalance(owner, operatorIds, cluster)` | `uint256` | ETH cluster balance | -| `getBalanceSSV(owner, operatorIds, cluster)` | `uint256` | SSV cluster balance | -| `getEffectiveBalance(owner, operatorIds, cluster)` | `uint32` | Cluster effective balance | -| `getClusterAssetType(owner, operatorIds)` | `uint8` | VERSION_SSV=0 or VERSION_ETH=1 | -| `getNetworkFee()` | `uint256` | Current ETH network fee | -| `getNetworkFeeSSV()` | `uint256` | Current SSV network fee | -| `getNetworkEarnings()` | `uint256` | Total ETH network earnings | -| `getNetworkEarningsSSV()` | `uint256` | Total SSV network earnings | -| `getOperatorFeeIncreaseLimit()` | `uint64` | Max fee increase % | -| `getMaximumOperatorFee()` | `uint256` | Max operator fee (ETH) | -| `getMaximumOperatorFeeSSV()` | `uint256` | Max operator fee (SSV) | -| `getMinimumOperatorEthFee()` | `uint256` | Min operator fee (ETH) | -| `getOperatorFeePeriods()` | `OperatorFeePeriodsData` | Declare/execute periods | -| `getLiquidationThresholdPeriod()` | `uint64` | ETH liquidation threshold blocks | -| `getLiquidationThresholdPeriodSSV()` | `uint64` | SSV liquidation threshold blocks | -| `getMinimumLiquidationCollateral()` | `uint256` | Min ETH liquidation collateral | -| `getMinimumLiquidationCollateralSSV()` | `uint256` | Min SSV liquidation collateral | -| `getValidatorsPerOperatorLimit()` | `uint32` | Max validators per operator | -| **`getNetworkValidatorsCount()`** | `uint32` | Total ETH validator count | -| **`cooldownDuration()`** | `uint256` | Unstake cooldown period | -| **`totalStaked()`** | `uint256` | Total SSV staked (cSSV supply) | -| **`stakedBalanceOf(address)`** | `uint256` | User's cSSV balance | -| **`pendingUnstake(address)`** | `UnstakeRequestsData[]` | User's pending unstake requests | -| **`accEthPerShare()`** | `uint256` | Global reward accumulator | -| **`stakingEthPoolBalance()`** | `uint256` | ETH in staking pool | -| **`previewClaimableEth(address)`** | `uint256` | Preview claimable ETH rewards | -| `getOracle(uint32)` | `address` | Oracle address by ID | -| `getOracleWeight(uint32)` | `uint256` | Oracle weight | -| `getActiveOracleIds()` | `uint32[4]` | Active oracle IDs | -| `getQuorumBps()` | `uint16` | Quorum in basis points | -| `getCommittedRoot(uint64)` | `bytes32` | Merkle root for block | -| `getVersion()` | `string` | Contract version | - -### Specifically Asked Views — All Present - -| View | Available? | Source | -|---|---|---| -| `accEthPerShare()` | **YES** | `SSVViews.sol:624` — reads `SSVStorageStaking.load().accEthPerShare` | -| `previewClaimableEth(address)` | **YES** | `SSVViews.sol:638` — computes pending via `_previewAccEthPerShare` helper | -| `getOperatorEarnings(uint64)` | **YES** | `SSVViews.sol:368` — updates snapshot in memory, returns `ethSnapshot.balance` | -| `getNetworkValidatorsCount()` | **YES** | `SSVViews.sol:578` — returns `sp.ethDaoValidatorCount` | -| `stakingEthPoolBalance()` | **YES** | `SSVViews.sol:631` — returns unpacked `s.stakingEthPoolBalance` | - -**Key finding for simulation:** `previewClaimableEth` (SSVViews.sol:638-645) includes a `_previewAccEthPerShare` helper that simulates `_syncFees` in read-only mode, factoring in unrealized network fee earnings. This means we can read accurate claimable rewards at any point without triggering a state change. - ---- - -## R-3: Migration Value Calculation - -### `migrateClusterToETH` Requirements - -**Source:** `contracts/modules/SSVClusters.sol:264-348` - -```solidity -function migrateClusterToETH(uint64[] calldata operatorIds, Cluster memory cluster) external payable -``` - -**Steps:** -1. Validates cluster exists in SSV mapping (`VERSION_SSV`) -2. Computes SSV balance at current block (settles outstanding fees) -3. Sets `cluster.balance = msg.value` (ETH deposit) -4. Sets `cluster.active = true` (even if previously liquidated) -5. Liquidation check: `isLiquidatableWithEB(...)` — must pass or reverts `InsufficientBalance` -6. Stores in `ethClusters`, deletes from `clusters` -7. Handles EB deviation accounting -8. Refunds full SSV cluster balance via `CoreLib.transferTokenBalance(msg.sender, ssvClusterBalance)` - -### Minimum ETH for Migration (Survival Formula) - -For a cluster with N validators, 4 operators at default fee, implicit EB (32 ETH): - -``` -vUnits = N * 10_000 (implicit, assumes 32 ETH/validator) -burnRate = 4 * DEFAULT_OPERATOR_ETH_FEE_PACKED - = 4 * 17754 (1_775_464_912 / 100_000 = 17754 packed) -networkFee = 35509 (3_550_900_000 / 100_000 = 35509 packed) - -rate = burnRate + networkFee = 4*17754 + 35509 = 106525 - -thresholdUnits = (minimumBlocksBeforeLiquidation * rate * vUnits) / VUNITS_PRECISION - = (35800 * 106525 * N * 10000) / 10000 - = 35800 * 106525 * N - -liquidationThreshold = thresholdUnits * ETH_DEDUCTED_DIGITS - = 35800 * 106525 * N * 100_000 - -For N=1: 35800 * 106525 * 100_000 = 381,359,500,000,000 wei ≈ 0.0003814 ETH -``` - -Plus must also exceed `minimumLiquidationCollateral = 940_000_000_000_000 = 0.00094 ETH`. - -**So minimum ETH for migration with N validators (4 ops, default fees):** -``` -max(0.00094, 0.0003814 * N) ETH + epsilon -``` - -For N=1..3, the 0.00094 ETH minimum collateral dominates. For N>=3, the threshold formula dominates. - -### SSV Refund Handling - -At `SSVClusters.sol:340-342`: -```solidity -if (ssvClusterBalance != 0) { - CoreLib.transferTokenBalance(msg.sender, ssvClusterBalance); -} -``` - -The full outstanding SSV balance (after settling fees to current block) is refunded to `msg.sender` as SSV tokens. - ---- - -## R-4: Mainnet Deployment Info - -### Contract Addresses - -**Source:** `deployments/mainnet-upgrade.config.json`, `.openzeppelin/mainnet.json` - -| Contract | Address | -|---|---| -| SSVNetwork (proxy) | `0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1` | -| SSVNetworkViews | `0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4` | -| SSV Token | `0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54` | -| DAO/Owner | `0xb35096b074fdb9bBac63E3AdaE0Bbde512B2E6b6` | - -### Deployment Block - -The `.openzeppelin/mainnet.json` records the proxy deploy tx hash: `0x4a11a560d3c2f693e96f98abb1feb447646b01b36203ecab0a96a1cf45fd650b`. The exact block number is not stored in the repo config files. - -**To determine the deployment block**, look up the tx on-chain. The SSVNetwork v1 was deployed around block 17507487 (June 2023). The current proxy at `0xDD9BC35aE...` was a later redeployment around block 18685000+ (Nov 2023). The current mainnet block is ~21.8M+ (Feb 2026). - -**Event scan estimate:** ~3M blocks from initial deployment to present. However, the fork approach avoids needing to scan events — we get live state directly from the fork. - -### Fork Configuration - -**Source:** `hardhat.config.ts:62-69` - -```typescript -hardhat_forked: { - type: 'edr-simulated', - forking: { - url: "http://127.0.0.1:8545", - blockNumber: process.env.FORK_BLOCK_NUMBER ? Number(...) : undefined, - } -} -``` - -The fork approach: -1. Start Anvil: `anvil --fork-url "$MAINNET_RPC_URL" --port 8545` -2. Run tests with `npx hardhat test --network hardhat_forked` -3. Optionally pin block with `FORK_BLOCK_NUMBER=` - ---- - -## R-5: SSV Token Minting on Fork - -### SSV Token Contract - -**Source:** `contracts/token/SSVToken.sol` - -```solidity -contract SSVToken is Ownable, ERC20, ERC20Burnable { - constructor() ERC20("SSV Token", "SSV") { - _mint(msg.sender, 1000000000000000000000); - } - function mint(address to, uint256 amount) external onlyOwner { - _mint(to, amount); - } -} -``` - -The `mint` function is `onlyOwner` — only the token deployer (not the DAO address on the SSVNetwork contract) can mint. The SSV token on mainnet has a fixed supply (no mint function exposed to arbitrary callers). - -### How Tests Provision SSV Tokens - -**Source:** `test/setup/fixtures.ts:181-184` - -In fresh deployments, tests deploy their own `MockToken`: -```typescript -const ssvToken = await connection.ethers.deployContract("MockToken"); -await ssvToken.mint(deployer.address, connection.ethers.parseEther("1000000")); -``` - -In fork tests (`ssvNetworkFullForkedFixture`), the test attaches to the real mainnet SSV token at `ForkConfig.SSV_TOKEN` and uses the existing on-chain balances. - -### Can We `deal` / `hardhat_setStorageAt`? - -**Yes.** This is the recommended approach for fork simulation: - -```typescript -// Option 1: hardhat_setBalance for ETH -await ethers.provider.send("hardhat_setBalance", [address, hexAmount]); - -// Option 2: hardhat_setStorageAt for ERC-20 balances -// SSV Token uses OpenZeppelin ERC20 — balances are at mapping slot -// balanceOf mapping is at slot 0 in the OZ layout -const slot = ethers.keccak256(ethers.AbiCoder.defaultAbiCoder().encode( - ["address", "uint256"], [targetAddress, 0] -)); -await ethers.provider.send("hardhat_setStorageAt", [ - ssvTokenAddress, slot, ethers.zeroPadValue(ethers.toBeHex(amount), 32) -]); -``` - -For the simulation, we can also impersonate the SSV token owner to call `mint()` if the mainnet token has a live owner, OR use `hardhat_setStorageAt` to directly set balances. - ---- - -## R-6: Fee Sync Mechanics - -### `_syncFees` — When Is It Called? - -**Source:** `contracts/modules/SSVStaking.sol:179-203` - -`_syncFees` is called inside **SSVStaking** at the start of these functions: -- `syncFees()` — explicit external call (line 35) -- `stake(uint256)` — line 51 -- `requestUnstake(uint256)` — line 73 -- `claimEthRewards()` — line 117 -- `onCSSVTransfer(from, to, amount)` — line 174 (triggered by cSSV transfers) - -### What `_syncFees` Does - -```solidity -function _syncFees(StorageStaking storage s) internal { - StorageProtocol storage sp = SSVStorageProtocol.load(); - PackedETH current = sp.networkTotalEarnings(); // <- reads live network earnings - sp.ethDaoBalance = current; // <- snapshots DAO balance - sp.ethDaoIndexBlockNumber = uint32(block.number); // <- snapshots block - - PackedETH previous = s.stakingEthPoolBalance; - if (current.lte(previous)) { - s.stakingEthPoolBalance = current; - return; - } - - PackedETH packedNewFees = current.sub(previous); - uint256 totalStaked = ICSSVToken(CSSV_ADDRESS).totalSupply(); - if (totalStaked != 0) { - uint256 newFeesWei = PackedETHLib.unpack(packedNewFees); - s.accEthPerShare += uint128((newFeesWei * PRECISION) / totalStaked); - } - s.stakingEthPoolBalance = current; -} -``` - -`networkTotalEarnings()` (ProtocolLib.sol:85-91) computes: -``` -earningsUnits = (blocksSinceLastUpdate * ethNetworkFee * daoTotalEthVUnits) / VUNITS_PRECISION -return ethDaoBalance + packed(earningsUnits) -``` - -### Does `accEthPerShare` Update on Cluster Operations? - -**No.** Confirmed by grep: `_syncFees` / `syncFees` are NOT called in `SSVClusters.sol`. Cluster operations (`deposit`, `withdraw`, `liquidate`, `migrateClusterToETH`, `updateClusterBalance`) do NOT trigger `_syncFees`. - -However, `ProtocolLib.updateDAO()` and `ProtocolLib.updateDAOEarnings()` are called by cluster operations, which update `ethDaoBalance` and `ethDaoIndexBlockNumber`. This means: -- **The underlying network earnings accumulate correctly** (via `networkTotalEarnings()` reading live block numbers) -- **But `accEthPerShare` in StorageStaking is stale** until someone calls a staking function - -**Implication for simulation:** The staking accumulator is lazy. `accEthPerShare` only updates when staking actions occur. Between staking actions, network fees continue to accrue in `ethDaoBalance` via `ProtocolLib`, but the per-share distribution isn't computed until `_syncFees` is called. The view function `previewClaimableEth` handles this correctly by computing a preview. - ---- - -## R-7: Mainnet Scale - -### Estimated Network Size - -The mainnet SSV network (as of early 2026): -- **Operators:** ~1,200-1,500 registered operators (not all active) -- **Clusters:** ~25,000-40,000 clusters (based on validator registrations) -- **Validators:** ~70,000-100,000+ validators registered through SSV - -The `getNetworkValidatorsCount()` view returns `sp.ethDaoValidatorCount` which tracks ETH-cluster validators only. On a pre-upgrade fork, this will be 0 since no clusters have migrated yet. - -### Feasibility of Full Tracking - -For simulation purposes: -- **All operators:** Feasible to track — ~1,500 is small -- **All clusters:** Feasible with events-based reconstruction, but we need cluster structs (validatorCount, index, networkFeeIndex, balance, active). These are hashed on-chain, not stored in cleartext. -- **Sampling approach:** For Monte Carlo simulation, we can: - 1. Use a representative sample (100-500 clusters across different sizes) - 2. Create synthetic clusters with realistic distributions - 3. Focus on migration scenarios rather than full state replay - -### Cluster State Challenge - -Cluster data is stored as `keccak256(hash)` — not directly readable. To get actual cluster state, we'd need to: -1. Replay events from deployment to reconstruct cluster structs -2. OR use the view functions with known cluster structs from event logs -3. OR create fresh clusters in the simulation - -**Recommendation:** For Monte Carlo simulation, create synthetic clusters with realistic parameter distributions rather than trying to replay full mainnet state. The fork gives us correct protocol parameters and operator state; we generate the cluster scenarios. - ---- - -## Architecture Design - -### Refined Simulation Architecture - -``` -┌─────────────────────────────────────────────────────┐ -│ Simulation Harness │ -│ (TypeScript, runs on Hardhat forked network) │ -├─────────────────┬───────────────────────────────────┤ -│ Setup Phase │ Execution Phase │ Check Phase │ -│ │ │ │ -│ 1. Fork mainnet │ For each epoch: │ After each: │ -│ 2. Upgrade │ - Mine N blocks │ - View calls │ -│ contracts │ - Random actions: │ - Invariant │ -│ 3. Configure │ * register val │ checks │ -│ oracles │ * migrate │ - Balance │ -│ 4. Provision │ * deposit/wdraw │ accounting │ -│ test actors │ * liquidate │ - Conservation │ -│ 5. Stake SSV │ * stake/unstake │ laws │ -│ (mint cSSV) │ * commitRoot │ │ -│ │ * claimRewards │ │ -└─────────────────┴───────────────────┴───────────────┘ -``` - -### Simulation Parameters - -| Parameter | Recommended Value | Rationale | -|---|---|---| -| Fork block | Latest mainnet block | Most realistic state | -| Sample operators | 50 (of ~1500) | Representative mix of fees/sizes | -| Sample clusters | 200-500 synthetic | Mix of sizes: 1, 4, 32, 100 validators | -| Actors (EOAs) | 20 | Cluster owners, stakers, liquidators | -| Epochs per run | 100 | Each epoch = 1000 blocks (~3.5 hrs) | -| Blocks per epoch | 1000 | Enough for fee accrual to be significant | -| Monte Carlo runs | 50-100 | For statistical confidence | -| Actions per epoch | 5-15 random | From weighted distribution | - -### Action Distribution (per epoch) - -| Action | Weight | Description | -|---|---|---| -| `registerValidator` | 10% | Add validators to ETH clusters | -| `migrateClusterToETH` | 15% | Migrate SSV clusters | -| `deposit` | 15% | Top up cluster balances | -| `withdraw` | 10% | Withdraw from clusters | -| `liquidate` | 5% | Liquidate underfunded clusters | -| `commitRoot` | 10% | Oracle EB updates | -| `updateClusterBalance` | 10% | Apply EB changes | -| `stake` | 10% | Stake SSV tokens | -| `requestUnstake` | 5% | Request unstaking | -| `claimEthRewards` | 5% | Claim ETH rewards | -| `mine blocks (no-op)` | 5% | Time passage only | - -### Invariant Checks - -After each epoch, verify: - -1. **ETH Conservation:** `contract.balance >= sum(all_cluster_balances) + sum(all_operator_eth_earnings) + stakingEthPoolBalance` -2. **SSV Conservation:** `ssvToken.balanceOf(contract) >= sum(all_ssv_cluster_balances) + sum(all_operator_ssv_earnings) + sum(pending_unstake_amounts)` -3. **Staking Accumulator:** `accEthPerShare` monotonically non-decreasing -4. **Staking Pool:** `stakingEthPoolBalance <= getNetworkEarnings()` -5. **Validator Counts:** `getNetworkValidatorsCount() == sum(cluster.validatorCount for active ETH clusters)` -6. **Operator Consistency:** For each operator, `ethValidatorCount == sum(cluster.validatorCount where op in cluster)` -7. **Cluster Hash Integrity:** All cluster operations produce valid cluster hashes (verifiable via view functions) -8. **Liquidation Correctness:** No active cluster with `validatorCount > 0` is liquidatable after deposit/reactivate -9. **Oracle Monotonicity:** `latestCommittedBlock` strictly increases -10. **cSSV Supply = Total Staked SSV:** `cssvToken.totalSupply() == ssvToken.balanceOf(stakingContract) - pendingUnstakeTotal` - -### Showstoppers and Design Changes - -#### 1. Cluster State Opacity (Mitigated) -On-chain cluster data is hashed — we can't read arbitrary cluster state. **Mitigation:** Track all cluster structs locally in the simulation (created by us), and pass correct structs to each function call. This is how the existing tests work. - -#### 2. cSSV Must Exist Before Oracle Calls (Critical) -`commitRoot` requires `totalSupply > 0`. The simulation must stake SSV and mint cSSV **before** attempting any oracle root commits. **Sequence:** deploy/upgrade -> stake SSV -> set up oracles -> simulate. - -#### 3. Lazy `accEthPerShare` (Design Consideration) -The staking accumulator only updates on staking actions. For accurate invariant checking between epochs, use `previewClaimableEth()` (which simulates `_syncFees` read-only) rather than reading `accEthPerShare()` directly. - -#### 4. Merkle Proof Construction (Implementation Effort) -`updateClusterBalance` requires valid Merkle proofs. The simulation must build a Merkle tree from cluster effective balances and generate proofs. Use OpenZeppelin's `@openzeppelin/merkle-tree` library (same as the oracle would use). Proof leaf format: `keccak256(keccak256(abi.encode(clusterId, effectiveBalance)))`. - -#### 5. Fork State Freshness -The fork captures a point-in-time snapshot. During simulation, `block.number` advances locally but Ethereum mainnet state doesn't change. This is fine — we're testing contract logic, not mainnet liveness. - -### Implementation Roadmap - -1. **Phase 1 — Scaffold** (Task 1) - - Fork setup + upgrade fixture (leverage `ssvNetworkFullForkedFixture`) - - Actor provisioning (ETH + SSV via `hardhat_setBalance` / `hardhat_setStorageAt`) - - Oracle setup (impersonate 4 oracle addresses, fund with ETH) - - Initial SSV staking to bootstrap cSSV supply - -2. **Phase 2 — Action Engine** (Task 2) - - Random action generator with weighted distribution - - Cluster state tracker (local cache of all cluster structs) - - Merkle tree builder for EB oracle updates - - Block advancement (`mine` helper) - -3. **Phase 3 — Invariant Checker** (Task 3) - - Balance conservation checks (ETH + SSV) - - Staking reward accumulator verification - - Cross-entity consistency (operators vs clusters vs DAO) - - Statistical output (pass rates, failure distributions) - -4. **Phase 4 — Monte Carlo Runner** (Task 4) - - Parameterized test runner with random seeds - - Results aggregation and reporting - - Edge case amplification (heavy liquidation scenarios, rapid migration waves) diff --git a/docs/SOLIDITY_BEST_PRACTICES.md b/docs/SOLIDITY_BEST_PRACTICES.md deleted file mode 100644 index c6da5dbf..00000000 --- a/docs/SOLIDITY_BEST_PRACTICES.md +++ /dev/null @@ -1,520 +0,0 @@ -# Solidity & Smart Contract Security — Best Practices - -Consolidated reference for secure Solidity development, derived from Trail of Bits' [Building Secure Contracts](https://github.com/crytic/building-secure-contracts). Use this document when implementing fixes, reviewing code, or writing new features. - ---- - -## Table of Contents - -1. [Design Principles](#1-design-principles) -2. [Implementation Guidelines](#2-implementation-guidelines) -3. [Upgradeability & Proxy Patterns](#3-upgradeability--proxy-patterns) -4. [Arithmetic Safety](#4-arithmetic-safety) -5. [Access Control](#5-access-control) -6. [Reentrancy & External Interactions](#6-reentrancy--external-interactions) -7. [Event Logging & Monitoring](#7-event-logging--monitoring) -8. [Token Integration](#8-token-integration) -9. [Testing Strategy](#9-testing-strategy) -10. [Static Analysis](#10-static-analysis) -11. [Fuzzing with Echidna](#11-fuzzing-with-echidna) -12. [Security Properties & Invariants](#12-security-properties--invariants) -13. [Code Maturity Checklist](#13-code-maturity-checklist) -14. [Deployment & Incident Response](#14-deployment--incident-response) -15. [Pre-Audit Checklist](#15-pre-audit-checklist) -16. [EVM Internals Quick Reference](#16-evm-internals-quick-reference) - ---- - -## 1. Design Principles - -### Keep it simple -Use the simplest solution that meets requirements. Every team member should understand the design. - -### Minimize on-chain logic -Keep as much computation off-chain as possible. Pre-process data off-chain, verify on-chain. Example: sort a list off-chain, verify order on-chain. - -### Document before coding -Write documentation at three levels before implementation: -1. **Plain English** — system purpose, assumptions, threat model -2. **Architecture diagrams** — contract interactions, state machine, data flow -3. **Code-level** — NatSpec for every public/external function, inline comments for non-obvious logic - -### Specification alignment -- Every arithmetic formula should map 1:1 to a specification -- Document precision loss expectations for every formula -- Specify parameter ranges (min/max) and propagate through docs -- System and function-level invariants should be explicitly stated - ---- - -## 2. Implementation Guidelines - -### Function design -- **Small functions with clear purpose** — one function, one job -- **Divide logic** across contracts or into grouped functions (auth, arithmetic, state) -- **Minimal cyclomatic complexity** — avoid deep nesting of if/else/ternary - -### Inheritance -- Keep inheritance trees shallow and narrow -- Be aware of C3 linearization — `contract A is B, C` and `contract A is C, B` have different storage layouts -- Watch for function shadowing across the inheritance chain -- Use Slither's inheritance-graph printer to visualize hierarchy - -### Dependencies -- Use well-tested libraries (OpenZeppelin) — don't copy-paste -- Pin dependency versions, keep them updated -- Audit third-party code before integrating - -### Solidity-specific -- **Use a stable compiler release** for deployment, but check for warnings with the latest -- **Avoid inline assembly** unless absolutely necessary — requires EVM mastery -- If assembly is used: justify it, document every operation, provide a high-level reference implementation, and test with differential fuzzing -- **Solidity 0.8+** provides built-in overflow/underflow checks — do not disable (`unchecked`) without explicit justification and documentation -- **Favor explicit over implicit** — be explicit about visibility, mutability, return types - -### Code hygiene -- No dead code — remove anything replaced -- No redundant logic — if similar code exists, extend it -- Clear naming conventions, consistent throughout -- Use custom errors instead of `require` strings (gas efficient, more informative) -- Types should enforce correctness where possible (e.g., custom types for packed values) - ---- - -## 3. Upgradeability & Proxy Patterns - -### General guidance -- **Prefer contract migration over upgradeability** — migration offers the same benefits without delegatecall complexity -- **If using delegatecall proxies, use data separation patterns** when possible -- **Document the upgrade procedure before deployment** — include: initialization calls, key locations, post-deployment verification scripts - -### Delegatecall proxy safety checklist - -| Risk | Mitigation | -|------|------------| -| **Storage layout mismatch** | Proxy and implementation must inherit from the same shared base. Never define state variables independently. | -| **Inheritance order** | `contract A is B, C` vs `contract A is C, B` produce different layouts. Lock inheritance order. | -| **Uninitialized implementation** | Initialize immediately on deployment. Use a factory pattern. Disable direct implementation usage with a constructor flag. | -| **Function shadowing** | If proxy and implementation define the same function, the proxy's version wins. Audit admin functions (`setOwner`, etc.). | -| **Immutable/constant drift** | Immutables are embedded in bytecode — they can diverge between proxy and implementation. | -| **Contract existence checks** | `delegatecall` to an address with no code returns `true`. Verify target contract exists. Most proxy libraries do NOT check this automatically. | -| **Storage struct ordering** | Append-only for storage structs — NEVER reorder or remove existing fields. | - -### Tools -- [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) — automated safety checks for proxy patterns - ---- - -## 4. Arithmetic Safety - -### Overflow/underflow -- Solidity 0.8+ provides automatic checks for `+`, `-`, `*` -- `unchecked` blocks disable these checks — only use when overflow is mathematically impossible and document why -- When using assembly arithmetic, implement checks manually (see below) - -### Precision and rounding -- **Explicitly choose rounding direction** for every operation with precision loss -- Use ceiling division for conservative estimates (e.g., ETH to vUnits) -- Use floor division for safe payouts (e.g., vUnits to ETH) -- **Document precision loss** against a ground-truth (infinite-precision reference) -- Bound and document all trapping operations (divide-by-zero, etc.) - -### Packed types -- When packing values into smaller types (uint64, uint32), verify that overflow cannot occur before packing -- Document the precision lost by packing (e.g., `value / 100_000` loses last 5 digits) - -### Assembly arithmetic patterns -For `uint256` addition overflow check: -```solidity -unchecked { - c = a + b; - if (a > c) revert Overflow(); // Solidity 0.8.16+ -} -``` - -For `uint256` multiplication overflow check: -```solidity -unchecked { - c = a * b; - if (a != 0 && b != c / a) revert Overflow(); // Solidity 0.8.17+ -} -``` - -For sub-32-byte types (e.g., `int64`), clean upper bits with `signextend` or cast to `int256` first, then bounds-check. - -### Balance underflow protection -Always use `max(0, balance - fees)` pattern: -```solidity -uint256 usage = computeFees(); -cluster.balance = (usage >= cluster.balance) ? 0 : cluster.balance - usage; -``` - ---- - -## 5. Access Control - -### Principles -- **Least privilege** — each role should only access what it needs -- **Separation of concerns** — don't combine roles (fee-setter shouldn't have upgrade power) -- **No single EOA as sole admin** — use multisig/MPC for privileged operations -- **Two-step processes** for critical operations (e.g., `Ownable2Step`) -- Roles should be revocable - -### Implementation patterns -- Document all actors and their privileges in a matrix -- Test every actor-specific privilege explicitly -- Verify no privilege escalation paths exist -- Protect against leaked/lost keys — loss of one signer should not compromise the system - -### Checklist -- [ ] All privileged functions have access control -- [ ] Different roles have non-overlapping privileges -- [ ] Owner/admin functions use `onlyOwner` or equivalent -- [ ] Operator functions verify `operator.checkOwner()` -- [ ] No function can be called by an unauthorized party to modify state - ---- - -## 6. Reentrancy & External Interactions - -### Patterns -- **Checks-Effects-Interactions (CEI)** — validate, update state, then make external calls -- **Use `nonReentrant`** on any function that makes external calls or transfers ETH/tokens -- Never trust return values from external contracts without validation - -### External call risks -- External calls in transfer functions can lead to reentrancy (especially ERC777 hooks, `onERC721Received`) -- `delegatecall` returns `true` for addresses with no code -- Low-level calls (`call`, `delegatecall`, `staticcall`) return `true` for empty addresses — always check contract existence - -### Token transfers -- Use `SafeERC20` for token interactions (handles non-standard return values) -- Verify ETH transfers succeeded — check return value of `.call{value: amount}("")` -- Be aware of fee-on-transfer tokens, rebasing tokens, and tokens with hooks - ---- - -## 7. Event Logging & Monitoring - -### Design -- **Log ALL critical operations** — state changes, parameter updates, admin actions, transfers -- Use consistent event naming and parameter ordering -- Events facilitate debugging during development and monitoring after deployment -- Don't reuse the same event for different purposes - -### Monitoring -- Set up off-chain monitoring infrastructure that logs and alerts on events -- Document how to interpret each event and how to audit failures from logs -- Consider automated responses to suspicious patterns (pause, safe mode) -- Implement an incident response plan (see Section 14) - -### Event documentation should include -- Purpose of the event -- How it should be used by third parties (oracle, SDK, indexer) -- Assumptions about event ordering and completeness - ---- - -## 8. Token Integration - -When integrating with external tokens, verify: - -### ERC20 checklist -- [ ] Token has been security reviewed -- [ ] `transfer` and `transferFrom` return a boolean (some don't — use `SafeERC20`) -- [ ] Token mitigates ERC20 race condition on `approve` -- [ ] No fee-on-transfer behavior (deflationary tokens) -- [ ] No external calls in transfer functions (ERC777 hooks → reentrancy) -- [ ] No interest accrual that could get trapped -- [ ] Token is not upgradeable (or upgradeability is understood and acceptable) -- [ ] Owner cannot pause, blacklist, or perform unlimited minting -- [ ] Supply is distributed (not concentrated in few addresses) -- [ ] No flash minting capability - -### Known non-standard tokens -Be aware of specific tokens with non-standard behavior: -- **Missing revert**: BAT, HT, cUSDC, ZRX -- **Transfer hooks**: AMP, imBTC (reentrancy risk) -- **Missing return data**: BNB, OMG, USDT -- **Permit no-op**: WETH - ---- - -## 9. Testing Strategy - -### Unit tests -- Cover all happy paths, revert cases, edge conditions, and boundary values -- Test event emissions with exact parameter verification -- Test balance invariants (before/after checks) -- Test state consistency via view functions after operations -- Achieve 100% reachable branch and statement coverage - -### Test quality -- Tests should be isolated — no dependency on execution order -- Use descriptive test names that explain the scenario -- Follow Arrange-Act-Assert pattern -- Don't test the same thing twice — each test should verify one behavior -- Test code should compile without warnings - -### Integration tests -- Test cross-module interactions -- Test upgrade paths end-to-end -- Test with realistic parameter values (not just toy examples) - -### Advanced techniques -- **Fuzzing** (Echidna) — find edge cases through random transaction sequences -- **Symbolic execution** (Manticore) — prove properties mathematically -- **Mutation testing** — verify that tests catch intentional bugs -- **Differential testing** — compare assembly/optimized code against reference implementation - ---- - -## 10. Static Analysis - -### Slither -Run on every check-in. Triage and resolve all findings. - -**Key detectors:** -- Reentrancy vulnerabilities -- Uninitialized state variables -- Unused return values -- Incorrect visibility -- Shadowed state variables -- Unchecked low-level calls - -**Key printers:** -- `inheritance-graph` — check for shadowing and C3 linearization issues -- `function-summary` — review visibility and access controls -- `vars-and-auth` — review which functions write to which state variables -- `human-summary` — get a high-level overview of contract complexity - -**Specialized tools:** -- `slither-check-upgradeability` — proxy safety checks -- `slither-check-erc` — ERC conformance verification -- `slither-prop` — auto-generate security properties for ERC20 - ---- - -## 11. Fuzzing with Echidna - -### When to use -- State machine validation — verify no invalid states are reachable -- Access control — verify only authorized users can perform actions -- Arithmetic properties — verify invariants hold across random inputs -- Complex multi-transaction scenarios that are hard to unit test - -### Property types -1. **Boolean properties** — functions that return `true` if invariant holds -2. **Assertions** — `assert()` statements that must never fail -3. **Optimization** — find inputs that maximize/minimize a value - -### Writing effective properties -```solidity -// Good: specific, testable invariant -function echidna_total_supply_invariant() public view returns (bool) { - return token.totalSupply() == initialSupply + totalMinted - totalBurned; -} - -// Good: access control check -function echidna_only_owner_can_pause() public view returns (bool) { - if (msg.sender != owner) { - return !paused; // non-owners should never be able to pause - } - return true; -} -``` - -### Best practices -- Start with simple properties, iterate toward complexity -- Use filtering (modulo operator) to constrain inputs -- Collect corpus for coverage analysis -- Run periodically in CI, not just once -- Handle ETH: use `maxValue` config for payable functions - ---- - -## 12. Security Properties & Invariants - -### Categories of properties to verify - -| Category | What to check | Recommended tool | -|----------|---------------|------------------| -| **State machine** | No invalid state reachable; all valid states reachable; no trapped states | Echidna, Manticore | -| **Access control** | Only authorized users can perform actions; no privilege escalation | Slither, Echidna | -| **Arithmetic** | No overflow/underflow; rounding is correct; precision loss bounded | Manticore, Echidna | -| **Inheritance** | No shadowing; correct C3 linearization; `super` calls not missed | Slither | -| **External interactions** | Resilient to malicious external contracts; oracle manipulation handled | Echidna, Manticore | -| **Standard conformance** | ERC20/ERC721 behavior matches specification | Slither, Echidna | - -### What automated tools CANNOT easily find -- Privacy violations (all transactions are public in the mempool) -- Front-running / sandwich attacks / MEV -- Cryptographic implementation flaws -- Risky interactions with external DeFi protocols -- Social engineering or off-chain vulnerabilities - -### Transaction ordering risks (MEV) -- Identify and document all front-running opportunities -- Use time delays and slippage checks where applicable -- Use tamper-resistant oracles -- Test privileged operations for ordering risks -- Document known MEV opportunities visibly for users - ---- - -## 13. Code Maturity Checklist - -Self-evaluation framework (rate each area: Missing / Weak / Moderate / Satisfactory / Strong): - -### Arithmetic -- [ ] Explicit overflow protection (Solidity 0.8+ or equivalent) -- [ ] All `unchecked` blocks justified and documented -- [ ] Specification matches code for all formulas -- [ ] Rounding direction explicit for all precision-losing operations -- [ ] Parameter ranges bounded and documented -- [ ] Automated testing (fuzzing/formal methods) covers arithmetic - -### Access Controls -- [ ] All privileged functions have access control -- [ ] Principle of least privilege followed -- [ ] Different roles with non-overlapping privileges -- [ ] Two-step processes for privileged EOA operations -- [ ] Key loss/leakage does not compromise the system - -### Complexity Management -- [ ] Functions have low cyclomatic complexity (< 11) -- [ ] No unnecessary code duplication -- [ ] Clear naming conventions applied consistently -- [ ] Types enforce correctness where possible -- [ ] Each function has a specific, documented purpose - -### Testing & Verification -- [ ] All normal use cases tested -- [ ] All tests pass -- [ ] Code coverage measured and reported -- [ ] Automated testing (fuzzing) used for critical components -- [ ] Tests run in CI/CD pipeline -- [ ] Integration tests implemented -- [ ] Test cases are isolated (no order dependency) - -### Documentation -- [ ] System architecture documented with diagrams -- [ ] All critical functions documented (NatSpec) -- [ ] Known risks and limitations documented -- [ ] Glossary of terms exists -- [ ] User stories cover all operations -- [ ] Invariants clearly defined in documentation - -### Low-level Code -- [ ] Assembly usage is limited and justified -- [ ] Inline comments present for every assembly operation -- [ ] High-level reference implementation exists for complex assembly -- [ ] Differential fuzzing validates assembly against reference -- [ ] No re-implementation of well-established library functionality - ---- - -## 14. Deployment & Incident Response - -### Pre-deployment -- Document the full deployment process (including upgrade/migration steps) -- Write and test post-deployment verification scripts -- Use fork testing to validate deployment on a mainnet fork -- Freeze a stable commit before deployment - -### Post-deployment -- Monitor contracts — observe logs, set up alerts -- Publish security contact information -- Secure privileged wallets (hardware wallets, multisig) -- Have an incident response plan ready - -### Incident response plan -**Application design considerations:** -- Identify which components should be pausable, migratable, upgradeable -- Assess impact of pausing on dependent contracts -- Define system invariants to monitor - -**Documentation to prepare:** -- Runbook of common emergency actions (pause, key rotation, upgrade) -- How to interpret event emissions -- How to access wallets with special roles -- Deployment/upgrade verification procedures -- Stakeholder contact procedures - -**Process:** -- Designate incident roles: technical lead, communication lead, legal lead -- Conduct periodic training and incident response exercises -- Set up monitoring tools (third-party + in-house) -- Consider automated responses (auto-pause on suspicious activity) - -**Threat intelligence:** -- Monitor similar protocols for vulnerabilities -- Follow dependency communication channels -- Maintain contact with dependency maintainers - ---- - -## 15. Pre-Audit Checklist - -Before submitting code for security review: - -### Resolve easy issues -- [ ] Run Slither — triage all findings -- [ ] Achieve high test coverage -- [ ] Remove dead code, unused libraries, stale features -- [ ] If upgradeable, run `slither-check-upgradeability` -- [ ] If ERC20/721, run `slither-check-erc` - -### Make code accessible -- [ ] Provide a detailed list of in-scope files -- [ ] Clear build instructions (verified on fresh environment) -- [ ] Frozen commit hash / branch / release -- [ ] Identify boilerplate, dependencies, and forked code differences - -### Documentation -- [ ] Flowcharts and sequence diagrams for primary workflows -- [ ] User stories -- [ ] On-chain / off-chain assumptions (oracles, bridges, data validation) -- [ ] Actor list with roles and privileges -- [ ] Function documentation with inline comments for complex areas -- [ ] System and function invariants documented -- [ ] Parameter ranges (min/max) documented -- [ ] Arithmetic formulas mapped to specification with precision loss expectations -- [ ] Glossary of terms - ---- - -## 16. EVM Internals Quick Reference - -### Key concepts -- **Two's complement** — negative numbers represented by flipping bits + 1: `-a = ~a + 1` -- **Signed vs unsigned opcodes** — use `slt`/`sgt` for signed comparisons, `lt`/`gt` for unsigned -- **Sub-32-byte types** — require `signextend` or explicit bounds checking; Solidity may optimize away cleanup -- **Division by zero** — EVM returns 0 (no revert); Solidity adds a check automatically outside assembly - -### Critical opcodes for security -| Opcode | Note | -|--------|------| -| `DELEGATECALL` | Executes in caller's storage context — proxy pattern foundation | -| `SELFDESTRUCT` | Deprecated post-Dencun but still exists — can force-send ETH | -| `CREATE2` | Deterministic address — can be used for metamorphic contracts | -| `CALL` | Returns true for addresses with no code — always verify | -| `SSTORE`/`SLOAD` | Expensive — batch storage operations; use transient storage (EIP-1153) where appropriate | - -### Gas awareness -- Storage writes (`SSTORE`) are the most expensive operation (~20K gas for cold, 5K for warm) -- Avoid unbounded loops that could exceed block gas limit -- Pack storage variables into 32-byte slots when possible -- Use `calldata` instead of `memory` for read-only function parameters - ---- - -## References - -- [Trail of Bits — Building Secure Contracts](https://github.com/crytic/building-secure-contracts) -- [Slither — Static Analysis](https://github.com/crytic/slither) -- [Echidna — Fuzzing](https://github.com/crytic/echidna) -- [Manticore — Symbolic Execution](https://github.com/trailofbits/manticore) -- [OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) -- [EVM Codes Reference](https://evm.codes) -- [Solidity Documentation](https://docs.soliditylang.org) diff --git a/docs/SPEC_VALIDATOR_REGISTRATION.md b/docs/SPEC_VALIDATOR_REGISTRATION.md deleted file mode 100644 index 3e499fce..00000000 --- a/docs/SPEC_VALIDATOR_REGISTRATION.md +++ /dev/null @@ -1,284 +0,0 @@ ---- -title: Validator Registration — All State Combinations - ---- - -# Validator Registration — All State Combinations - -**Scope:** `registerValidator` / `bulkRegisterValidator` → `_bulkRegisterValidator` -**Date:** Feb 16, 2026 - -The registration path executes these checks in order: -1. Input validation (publicKeys length, sharesData length, operatorIds length) -2. Public key registration (`ValidatorLib.registerPublicKey`) -3. Cluster validation (`validateClusterOnRegistration`) -4. Balance update (`cluster.balance += msg.value`) -5. Operator loop (`updateClusterOperatorsOnRegistration`): - - Sorted/unique check - - `ensureOperatorExist(operatorSt)` ← `isExistingCluster` param removed ✅ - - `ensureETHDefaults(operatorSt)` ← writes to storage - - `operator = operatorSt` ← memory copy AFTER defaults - - Whitelist check (if private) - - `updateSnapshot(operator, operatorId)` ← memory - - `ethValidatorCount += delta` (limit check) - - Accumulate fee + index - - `s.operators[operatorId] = operator` ← write back full struct -7. Cluster data update + fee deduction (`updateClusterData` → `updateBalanceWithEB`) -8. DAO update (`sp.updateDAO`) -9. Liquidation check (`isLiquidatableWithEB`) -10. Store cluster hash (`s.ethClusters[hashedCluster]`) -11. EB snapshot update (if explicit tracking) - ---- - -## A. Operator State Combinations - -### Operator States (per operator in the cluster) - -| # | State | `owner` | `snapshot.block` | `ethSnapshot.block` | `fee` (SSV) | `ethFee` | `ethValidatorCount` | How created | -|---|-------|---------|-------------------|---------------------|-------------|----------|---------------------|-------------| -| O1 | **Post-upgrade operator** (normal) | ≠ 0 | **0** | > 0 | 0 | > 0 | any | `registerOperator` now only sets `ethSnapshot.block`. `snapshot.block` stays 0 — new operators are ETH-only. | -| O2 | **Post-upgrade free operator** | ≠ 0 | **0** | > 0 | 0 | 0 | any | `registerOperator(fee=0)`. `snapshot.block` stays 0. | -| O3 | **Pre-upgrade operator (never migrated)** | ≠ 0 | > 0 | **0** | > 0 | **0** | 0 | Created before ETH upgrade; never had ETH interaction | -| O4 | **Pre-upgrade free operator (never migrated)** | ≠ 0 | > 0 | **0** | 0 | **0** | 0 | Created before ETH upgrade with fee=0 | -| O5 | **Pre-upgrade, partially migrated** | ≠ 0 | > 0 | > 0 | > 0 | > 0 | ≥ 0 | Had `ensureETHDefaults` called once (via prior registration or `declareOperatorFee`) | -| O6 | **Removed operator** | **≠ 0** ⚠️ | **0** | **0** | 0 | 0 | 0 | `removeOperator` → `_resetOperatorState` zeros fees/blocks/counts but **NOT owner** | -| O7 | **Never existed** | **0** | **0** | **0** | 0 | 0 | 0 | Default storage (operatorId never registered) | -| O8 | **Removed but had preserved index** | **≠ 0** ⚠️ | **0** | **0** | 0 | 0 | 0 | Same as O6 — `_resetOperatorState` zeros fees/blocks/counts but **NOT owner**; `ethSnapshot.index` preserved from `updateSnapshotsSt` call before reset | - -### What happens to each operator state during registration - -| Operator State | `ensureOperatorExist` | `ensureETHDefaults` | `updateSnapshot` (memory) | Net Result | Issues | -|---|---|---|---|---|---| -| **O1** New (snapshot = 0, ethSnapshot > 0, ethFee > 0) | ✅ Pass (`owner ≠ 0`, `ethSnapshot.block > 0`) | Outer guard: `ethSnapshot.block == 0 \|\| snapshot.block == 0` → **true** (snapshot = 0). Inner `ethSnapshot.block == 0` → false, skips init. Fee check: `ethFee == 0` → false (ethFee > 0), skips. **No-op but enters function body every time.** | Normal ETH snapshot update. `blockDiff * ethFee` accrued. | ✅ Correct but wasteful | `ensureETHDefaults` outer guard always true for O1/O2 — minor gas waste | -| **O2** New free (snapshot = 0, ethSnapshot > 0, ethFee = 0) | ✅ Pass | Same as O1 — outer guard true, inner checks skip. | `blockDiffEthFee = 0`. No accrual. | ✅ Correct but wasteful | Same as O1 | -| **O3** Pre-upgrade (snapshot > 0, ethSnapshot = 0, fee > 0, ethFee = 0) | ✅ Pass (`owner ≠ 0`, `snapshot.block > 0`) | Outer guard: `ethSnapshot.block == 0` → **true**. Inner: sets `ethSnapshot.block = block.number`, `ethSnapshot.balance = 0`. Fee check: `ethFee == 0 && fee != 0` → sets `ethFee = defaultOperatorEthFee()`. **Written to storage.** | Memory copy happens AFTER defaults. Gets correct `ethSnapshot.block` and `ethFee`. Normal snapshot from current block (blockDiff = 0, no accrual). | ✅ Correct — this is the intended migration path | None | -| **O4** Pre-upgrade free (snapshot > 0, ethSnapshot = 0, fee = 0, ethFee = 0) | ✅ Pass | Outer guard → true. Inner: sets `ethSnapshot.block`. Fee check: `ethFee == 0 && fee == 0` → **skips fee assignment**. `ethFee` stays 0. | Memory copy gets `ethFee = 0`. No accrual. | ✅ Correct — free operator stays free | None | -| **O5** Partially migrated (both blocks > 0, ethFee > 0) | ✅ Pass | Outer guard → false (both blocks > 0). Skips. | Normal snapshot update. | ✅ Correct | None | -| **O6** Removed (owner ≠ 0, both blocks = 0) | ❌ **REVERT** `OperatorDoesNotExist` via Check 2 (`ethSnapshot.block == 0 && snapshot.block == 0`). Note: Check 1 (`owner == address(0)`) does **NOT** fire because owner is preserved. | Never reached | Never reached | Registration fails | ⚠️ Correct outcome, but relies solely on Check 2. Check 1 is useless here — `owner ≠ 0` for removed operators. | -| **O7** Never existed (owner = 0, all zeros) | ❌ **REVERT** `OperatorDoesNotExist` via `owner == address(0)` OR both blocks == 0. | Never reached | Never reached | Registration fails | ✅ Correct behavior | -| **O8** Removed with preserved index | ❌ **REVERT** `OperatorDoesNotExist` via Check 2 (both blocks = 0). `owner ≠ 0` so Check 1 does not fire. | Never reached | Never reached | Registration fails | ⚠️ Same as O6 — correct outcome but Check 1 is dead | - -### Edge case: `ensureETHDefaults` re-entry on subsequent registrations - -| Operator State | 1st Registration | 2nd Registration (same operator, different cluster) | -|---|---|---| -| **O3** Pre-upgrade | `ensureETHDefaults` initializes `ethSnapshot.block` and `ethFee`. After write-back: state becomes O5. | `ensureETHDefaults` outer guard → false (both blocks > 0). Skips. Normal path. ✅ | -| **O4** Pre-upgrade free | `ensureETHDefaults` initializes `ethSnapshot.block`. `ethFee` stays 0. After write-back: both blocks > 0, ethFee = 0. | Outer guard → false. Skips. ✅ | - -### ⚠️ `snapshot.block == 0` is now the normal state for new operators - -After removing `op.snapshot.block = blockNum` from `registerOperator`, **all new post-upgrade operators have `snapshot.block == 0` and `ethSnapshot.block > 0`**. This is intentional — new operators are ETH-only and should never participate in SSV clusters. - -**Paths that create `ethSnapshot.block > 0, snapshot.block == 0`:** - -| Path | Creates this state? | Explanation | -|---|---|---| -| `registerOperator` (current) | **YES** ✅ | Only sets `ethSnapshot.block`. This is the new normal for O1/O2. | -| `ensureETHDefaults` (on O3/O4) | **YES** | Sets `ethSnapshot.block` on storage. Caller writes back memory struct preserving original `snapshot.block > 0`, so for pre-upgrade operators this doesn't create the mismatch. But `declareOperatorFee` calls it on storage directly. | - -**Impact of `snapshot.block == 0` on `ensureETHDefaults` outer guard:** - -The guard `ethSnapshot.block == 0 || snapshot.block == 0` is now **always true** for new operators (O1/O2). This means `ensureETHDefaults` enters its body on every registration call for new operators, even though both inner checks (`ethSnapshot.block == 0` and `ethFee == 0 && fee != 0`) evaluate to false and skip. This is a minor gas waste. - -**Suggested simplification:** Change the outer guard to only check `ethSnapshot.block == 0`: -```solidity -if (operator.ethSnapshot.block == 0) { - operator.ethSnapshot.block = uint32(block.number); - operator.ethSnapshot.balance = PACKED_ETH_ZERO; - if (operator.ethFee.eq(PACKED_ETH_ZERO) && operator.fee.neq(PACKED_SSV_ZERO)) { - operator.ethFee = defaultOperatorEthFee(); - } -} -``` -This is sufficient because: -- For O3/O4 (pre-upgrade): `ethSnapshot.block == 0` → enters, initializes correctly -- For O1/O2 (new): `ethSnapshot.block > 0` → skips entirely (correct, already initialized) -- For O5 (migrated): both blocks > 0 → skips (correct) -- The `|| snapshot.block == 0` condition only served to catch a state that didn't exist before; now it catches O1/O2 needlessly - ---- - -## B. Cluster State Combinations - -### Cluster States - -| # | State | `s.ethClusters[hash]` | `s.clusters[hash]` | `cluster.active` | `cluster.validatorCount` | Description | -|---|-------|----------------------|--------------------|--------------------|--------------------------|-------------| -| C1 | **New cluster (never existed)** | 0 | 0 | true (required) | 0 (required) | First-time registration | -| C2 | **Existing active ETH cluster** | ≠ 0 | 0 | true | > 0 | Adding validators to existing ETH cluster | -| C3 | **Existing active ETH cluster (0 validators)** | ≠ 0 | 0 | true | 0 | All validators removed but cluster not liquidated | -| C4 | **Liquidated ETH cluster** | ≠ 0 | 0 | **false** | any | Cluster was liquidated | -| C5 | **Existing SSV cluster (active)** | 0 | ≠ 0 | true | > 0 | Legacy SSV cluster, not migrated | -| C6 | **Existing SSV cluster (liquidated)** | 0 | ≠ 0 | false | any | Legacy SSV cluster, liquidated | -| C7 | **Both exist** | ≠ 0 | ≠ 0 | — | — | Should never happen (INV-G3) | - -### What happens to each cluster state during registration - -| Cluster State | `validateClusterOnRegistration` | `updateClusterOnRegistration` | Result | Issues | -|---|---|---|---|---| -| **C1** New (both = 0) | `clusterData == 0 && clusterDataSSV == 0`. Checks: `validatorCount == 0`, `networkFeeIndex == 0`, `index == 0`, `balance == 0`, `active == true`. Must all pass. | Operators get `ensureOperatorExist(op)`. Normal path. | ✅ New ETH cluster created | None | -| **C2** Active ETH (ethClusters ≠ 0) | `clusterData ≠ 0`. Checks `clusterData == hashClusterData(cluster)` (state must match). Then `validateClusterIsNotLiquidated` (must be active). | Normal fee settlement + validator addition. | ✅ Validators added | None | -| **C3** Active ETH, 0 validators | Same as C2. Hash must match. Must be active. | Fee settlement (no fees since 0 validators). Adds validators. | ✅ Re-populating empty cluster | None | -| **C4** Liquidated ETH | `clusterData ≠ 0`. Hash check passes. Then `validateClusterIsNotLiquidated` → **`active == false`** | — | ❌ **REVERT** `ClusterIsLiquidated` | ✅ Correct — must reactivate first | -| **C5** Active SSV cluster | `clusterData == 0 && clusterDataSSV ≠ 0` → **REVERT** `IncorrectClusterVersion` | — | ❌ **REVERT** `IncorrectClusterVersion` | ✅ Correct — must migrate first | -| **C6** Liquidated SSV cluster | Same as C5 — `clusterData == 0 && clusterDataSSV ≠ 0` | — | ❌ **REVERT** `IncorrectClusterVersion` | ✅ Correct | -| **C7** Both exist | `clusterData ≠ 0` (ETH checked first). Hash check + active check. | Would proceed as C2. | ⚠️ Shouldn't happen. If it does, SSV data is orphaned. | INV-G3 violation | - -### Cluster state vs supplied `cluster` parameter mismatches - -| Scenario | What happens | -|---|---| -| New cluster but `validatorCount > 0` | `validateClusterOnRegistration` → REVERT `IncorrectClusterState` | -| New cluster but `active = false` | REVERT `IncorrectClusterState` | -| New cluster but `balance > 0` | REVERT `IncorrectClusterState` | -| Existing cluster but wrong state | `hashClusterData(cluster) != stored` → REVERT `IncorrectClusterState` | -| Existing cluster, correct state, but liquidated | REVERT `ClusterIsLiquidated` | - ---- - -## C. Operator × Cluster Cross-Product - -### Registration with mixed operator states (4 operators in a cluster) - -| Scenario | Operators | Cluster | Result | Notes | -|---|---|---|---|---| -| All normal, new cluster | [O1, O1, O1, O1] | C1 | ✅ Success | Standard path | -| All normal, existing cluster | [O1, O1, O1, O1] | C2 | ✅ Success | Standard path | -| Mix of normal + pre-upgrade | [O1, O3, O1, O3] | C1 | ✅ Success | O3 operators get ETH defaults initialized | -| All pre-upgrade, new cluster | [O3, O3, O3, O3] | C1 | ✅ Success | All get `ensureETHDefaults` | -| One removed operator | [O1, O6, O1, O1] | C1 or C2 | ❌ REVERT `OperatorDoesNotExist` | Fails on O6 | -| One never-existed | [O1, O7, O1, O1] | C1 or C2 | ❌ REVERT `OperatorDoesNotExist` | Fails on O7 | -| Free + paid mix | [O1, O2, O1, O2] | C1 | ✅ Success | Free operators contribute 0 to `cumulativeFee` | -| All free operators | [O2, O2, O2, O2] | C1 | ✅ Success | `burnRate = 0`. Only network fee applies. | -| Pre-upgrade free | [O4, O4, O4, O4] | C1 | ✅ Success | `ethFee` stays 0. No operator fee accrual. | -| Private operator, caller not whitelisted | [O1(private), O1, O1, O1] | C1 | ❌ REVERT `CallerNotWhitelistedWithData` | Whitelist check fails | -| Operator at validator limit | [O1(at limit), O1, O1, O1] | C2 | ❌ REVERT `ExceedValidatorLimitWithData` | `ethValidatorCount + delta > validatorsPerOperatorLimit` | -| SSV cluster with ETH operators | [O1, O1, O1, O1] | C5 | ❌ REVERT `IncorrectClusterVersion` | Cluster version mismatch | - ---- - -## D. EB (Effective Balance) State Combinations - -### EB States per cluster - -| # | State | `clusterEB[hash].vUnits` | `operatorEthVUnits[opId]` | Description | -|---|-------|--------------------------|---------------------------|-------------| -| E1 | **No EB tracking (implicit)** | 0 | 0 | Default: each validator = 32 ETH = `VUNITS_PRECISION` | -| E2 | **Explicit EB, at baseline** | `validatorCount * VUNITS_PRECISION` | 0 | Oracle set EB = 32 ETH/validator (no deviation) | -| E3 | **Explicit EB, above baseline** | > `validatorCount * VUNITS_PRECISION` | > 0 | Oracle set EB > 32 ETH/validator (positive deviation) | -| E4 | **Explicit EB, at max** | `validatorCount * ebToVUnits(2048)` | large positive | Oracle set EB = 2048 ETH/validator | - -### EB impact during registration - -| EB State | `updateBalanceWithEB` (fee deduction) | EB snapshot update (line 143-154) | Impact | -|---|---|---|---| -| **E1** Implicit | `getVUnits` returns `validatorCount * VUNITS_PRECISION` (OLD count, before increment). Fee deduction uses baseline vUnits. | `ebSnapshot.vUnits == 0` → skip. No EB update. | ✅ Correct — baseline adjusts automatically via `validatorCount` | -| **E2** Explicit, baseline | `getVUnits` returns stored vUnits (= old `validatorCount * VUNITS_PRECISION`). Fee deduction same as E1. | `ebSnapshot.vUnits > 0` → adds `delta * VUNITS_PRECISION`. | ✅ Correct — explicit tracking maintained | -| **E3** Explicit, above baseline | `getVUnits` returns stored vUnits (includes deviation). Fee deduction is **higher** than baseline (proportional to actual EB). | `ebSnapshot.vUnits > 0` → adds `delta * VUNITS_PRECISION` (baseline for new validators). Deviation unchanged. | ✅ Correct — new validators get baseline, existing deviation preserved | -| **E4** Explicit, at max | Same as E3 but with maximum deviation. Higher fee deduction. | Same as E3. | ✅ Correct | - -### EB + operator vUnits consistency during registration - -``` -BEFORE registration: - daoTotalEthVUnits = sum(all cluster effective vUnits) - operatorEthVUnits[opId] = sum(deviations from all clusters using this operator) - -AFTER registration (N new validators): - sp.updateDAO(true, N) → daoTotalEthVUnits += N * VUNITS_PRECISION (baseline) - operator.ethValidatorCount += N (baseline in operator) - if explicit EB: ebSnapshot.vUnits += N * VUNITS_PRECISION (baseline in cluster) - operatorEthVUnits[opId] NOT changed (deviation unchanged) - -CONSISTENCY CHECK: - New effective vUnits for cluster = old vUnits + N * VUNITS_PRECISION ✅ - New effective vUnits for operator = operatorEthVUnits[opId] + (ethValidatorCount + N) * VUNITS_PRECISION ✅ - New daoTotalEthVUnits = old + N * VUNITS_PRECISION ✅ -``` - -**No deviation change on registration → `operatorEthVUnits` correctly untouched.** - ---- - -## E. Fee Deduction During Registration (Existing Clusters) - -For existing clusters (C2, C3), `updateClusterData` is called which runs `updateBalanceWithEB`: - -``` -vUnits = getVUnits(hashedCluster, cluster.validatorCount) // OLD validatorCount -idxOp = newOperatorIndex - cluster.index -idxNet = currentNetworkFeeIndex - cluster.networkFeeIndex -operatorFeeUnits = (idxOp * vUnits) / VUNITS_PRECISION -networkFeeUnits = (idxNet * vUnits) / VUNITS_PRECISION -usage = (operatorFeeUnits + networkFeeUnits) * ETH_DEDUCTED_DIGITS -cluster.balance -= usage -``` - -| Scenario | vUnits used | Fee impact | Notes | -|---|---|---|---| -| Existing cluster, implicit EB | `oldValidatorCount * VUNITS_PRECISION` | Standard per-validator fee | ✅ | -| Existing cluster, explicit EB above baseline | Stored vUnits (includes deviation) | Higher fee (proportional to actual EB) | ✅ | -| Existing cluster, 0 validators (C3) | 0 (implicit) or stored (explicit) | If implicit: 0 fees. If explicit with vUnits > 0: fees on deviation only. | ⚠️ C3 with explicit EB and vUnits > 0 but validatorCount = 0 means pure deviation — should this be possible? | -| New cluster (C1) | `0 * VUNITS_PRECISION = 0` | 0 fees (no prior validators) | ✅ Correct — no fees to settle | - -### ⚠️ Edge: Empty cluster (C3) with explicit EB tracking - -If a cluster had validators, got an EB update (explicit tracking), then all validators were removed: -- `_bulkRemoveValidator` subtracts baseline from `ebSnapshot.vUnits` -- If `validatorCount == 0`: cleans up remaining deviation, sets `ebSnapshot.vUnits = 0` - -So when re-registering to C3, `ebSnapshot.vUnits` should be 0 → falls back to implicit. **This is correct.** - ---- - -## F. Liquidation Threshold Check - -After all updates, `isLiquidatableWithEB` is called: - -``` -if (cluster.validatorCount == 0) return false; // can't liquidate empty cluster -if (cluster.balance < minimumLiquidationCollateral) return true; -vUnits = getVUnits(hashedCluster, cluster.validatorCount); // NEW validatorCount -rate = burnRate + networkFee; -threshold = (minimumBlocksBeforeLiquidation * rate * vUnits) / VUNITS_PRECISION * ETH_DEDUCTED_DIGITS; -return cluster.balance < threshold; -``` - -| Scenario | vUnits | Threshold | Notes | -|---|---|---|---| -| New cluster, 1 validator, implicit EB | `1 * 10000` | `minBlocks * (burnRate + netFee) * 10000 / 10000 * 100000` | Standard | -| Existing cluster, adding validators, implicit EB | `(old + new) * 10000` | Higher threshold (more validators) | Must deposit enough to cover | -| Existing cluster, explicit EB above baseline | Stored vUnits + new baseline | Even higher threshold | EB amplifies required collateral | -| All free operators, no network fee | vUnits | `minBlocks * 0 * vUnits = 0` | Only `minimumLiquidationCollateral` matters | - ---- - -### ⚠️ Cleanup / Simplification - -| Area | Issue | Severity | -|---|---|---| -| `ensureETHDefaults` outer guard :143 | `\|\| operator.snapshot.block == 0` now always true for O1/O2. Function body entered on every call but does nothing. Simplify to `ethSnapshot.block == 0`. | Low (gas waste only) | -| `ensureOperatorExist` :160-162 | `(ethSnapshot.block == 0 && snapshot.block == 0)` can be simplified to `ethSnapshot.block == 0` since `ethSnapshot.block` is now the canonical existence marker. | Low (clarity) | -| `checkOwner` :132 | `snapshot.block == 0 && ethSnapshot.block == 0` can be simplified to `ethSnapshot.block == 0`. | Low (clarity) | -| `updateClusterOperatorsMigration` :383 | `snapshot.block == 0 && ethSnapshot.block == 0` → skip. Can simplify to `ethSnapshot.block == 0`. | Low (clarity) | -| `_resetOperatorState` doesn't zero `owner` | Removed operators retain their `owner`. `checkOwner` passes for the original owner — only the block == 0 check prevents further actions. | Medium (latent risk — defense in depth suggests zeroing `owner`) | - -### 🔍 Worth Verifying in Tests - -| # | Scenario | What to verify | -|---|---|---| -| 1 | Register with 4 new operators (O1) on new cluster | All pass `ensureOperatorExist`. `ensureETHDefaults` is a no-op. Cluster created correctly. | -| 2 | Register with mix of O1 + O3 on existing cluster | O3 gets defaults. O1 unchanged. Fee settlement correct. | -| 3 | Register with all free operators (O2) | `burnRate = 0`. Only network fee in liquidation check. | -| 4 | Register on empty cluster (C3) after all validators removed | Cluster re-populated. EB tracking reset to implicit. | -| 5 | Register on cluster with explicit EB above baseline (E3) | Fee deduction uses higher vUnits. New validators get baseline only. | -| 6 | Register that would exceed `validatorsPerOperatorLimit` | Reverts `ExceedValidatorLimitWithData`. | -| 7 | Register with insufficient deposit (fails liquidation check) | Reverts `InsufficientBalance`. | -| 8 | Register same public key twice | Second call reverts `ValidatorAlreadyExistsWithData`. | -| 9 | Register to SSV cluster (not migrated) | Reverts `IncorrectClusterVersion`. | -| 10 | Register to liquidated cluster | Reverts `ClusterIsLiquidated`. | -| 11 | Liquidate ETH cluster with new operators (O1) | `ethValidatorCount` must be decremented. Fixed in `_liquidateIfNeeded`. Verify it works. | -| 12 | Liquidate ETH cluster with pre-upgrade operators (O5) | `ethValidatorCount` decremented correctly (both blocks > 0). | -| 13 | New operator (O1) — `getOperatorById` returns `isActive = true` | ETH view correct. | -| 14 | New operator (O1) — `getOperatorByIdSSV` returns `isActive = false` | SSV view correct — not an SSV operator. | diff --git a/ssv-review/Internal-[DIP-X]-SSV-Staking.md b/ssv-review/Internal-[DIP-X]-SSV-Staking.md deleted file mode 100644 index 83c02b40..00000000 --- a/ssv-review/Internal-[DIP-X]-SSV-Staking.md +++ /dev/null @@ -1,496 +0,0 @@ -# Proposing Effective balance oracles and SSV staking to support new ETH-denominated network fees - -*Everything discussed below is a work in progress, intended to spark discussion within the ssv.network DAO and beyond. Implementation details and binding steps will be submitted to the ssv.network DAO snapshot after community feedback is gathered.* - -# Introduction - -The ssv.network DAO ("DAO") proposes introducing SSV Staking as part of a *broader set of protocol upgrades* designed to support ETH-denominated payments and native effective balance accounting within the SSV Network. - -The transition to ETH payments simplifies the protocol's economic model by aligning fee settlement with the asset in which validator rewards are generated. Moving fee payments to ETH removes cross-asset dependencies, reduces operational complexity, and enables more direct and predictable protocol-level accounting. - -In parallel, supporting Ethereum's post-Pectra validator model requires effective balance-aware accounting. Effective Balance Accounting ensures that fees, runway calculations, and liquidation logic scale with the actual stake secured by validators, rather than relying on fixed assumptions. Implementing this model natively requires the protocol to reflect validator effective balances on-chain throughout their lifecycle. - -To bridge the gap between Ethereum's consensus layer and on-chain accounting, the protocol introduces Effective Balance Oracles, which track validator balances and update protocol state. Operating this oracle system in a decentralized and resilient manner requires participation and delegation by parties economically aligned with the protocol. - -SSV Staking provides such a delegation mechanism, allowing SSV holders to stake their tokens and delegate stake toward the selection of Effective Balance Oracles. In doing so, protocol fee flows are reflected through the staking mechanism in proportion to protocol usage, strengthening alignment between token holders and the network. - ---- - -# Components of SSV Staking - -SSV Staking is enabled through three tightly coupled components: - -* **ETH Payments** introduces native ETH-denominated fees at the protocol level, allowing network and operator fees to be paid and settled in ETH. - -* **Effective Balance Accounting** upgrades the protocol's accounting model to calculate fees, runway consumption, and liquidation conditions based on validators' actual effective balance, rather than assuming a fixed 32 ETH per validator. This enables stake-aware accounting that natively aligns the protocol with Ethereum's post-Pectra validator model. - -* **SSV Staking** introduces staking and delegation functionality for SSV holders. Through staking, participants lock SSV and support the protocol's operation by participating in the distributed selection of *Effective Balance Oracles*. In turn, they are rewarded in ETH for their effort based on the amount of SSV staked. - ---- - -# ETH Payments - -ETH Payments introduce a fundamental change to how economic accounting is handled within the SSV Network. With such payments, operator fees and network fees are paid in ETH, replacing the existing SSV-denominated payment model. - -## Motivation - -The SSV Network operates at the validator layer of Ethereum, where rewards are generated exclusively in ETH. However, the current fee model requires participants to manage and pay fees in SSV, creating a structural mismatch between where value is produced and how costs are paid. - -Transitioning to ETH payments addresses this mismatch and delivers several standalone benefits: - -* **Asset alignment** - Clusters pay fees in the same asset that their validators earn. This removes the need for conversions, hedging, or the complexities of using another token in order to operate validators. - -* **Economic predictability** - SSV-denominated fees fluctuate independently of validator rewards, forcing frequent adjustments to pricing and governance parameters. - -* **Operational simplicity** - Paying fees in ETH simplifies accounting, budgeting, and automation for cluster owners and operators. ETH balances directly represent the operational runway without requiring additional token management. - -* **Institutional accessibility** - ETH-denominated payments remove a major adoption barrier for institutional and regulated participants, who often prefer or require minimizing exposure to additional tokens and non-native protocol tokens. - -## ETH as the Native Payment Asset - -Transitioning to ETH payments defines a clear separation between how new clusters are created and how existing SSV-based clusters are handled going forward: - -### New Clusters - -All new clusters will operate with ETH payments from the outset: - -* Operator fees are paid in ETH - -* Network fees are paid in ETH - -* ETH must be deposited upfront to fund the cluster's operational runway - -### Existing Clusters (SSV-based) - -Existing SSV-based clusters are treated as **legacy**, and support for actively operating them under the SSV payment model is removed. While these clusters may continue running as long as they have sufficient runway, they can no longer be maintained through operational changes. - -This means that adding new validators, removing existing validators, reactivating liquidated clusters or depositing additional SSV to extend a cluster's runway is no longer supported. As a result, **the only path forward for maintaining an existing cluster is migration to ETH payments**, which restores full cluster functionality under the new payment and accounting model. - -For cluster owners who do not wish to migrate or are unable to do so, the remaining option is to voluntarily liquidate the cluster. Self-liquidation returns the remaining cluster balance to the owner and signals operators to stop operating the cluster's validators. However, if the intention is to continue operating the validators in the future, migration to ETH payments will be required in order to do so. - -For cluster owners who anticipate needing more time to migrate but intend to continue operating their validators, it is critical to deposit sufficient SSV in advance to ensure enough operational runway until migration can be completed. - -*To guarantee all users have the option to top up their clusters before the transition to ETH payments, the SSV Foundation is requested to publish a prominent message on DAO-managed channels and assets relevant to disseminating information regarding the future inability to fund clusters with SSV.* - -## Cluster Migration - -Cluster migration allows existing SSV-based clusters to transition into ETH payments. Migration applies at the cluster level, and each cluster can be migrated in a single interaction, which upgrades it to ETH payments immediately. - -To migrate, the cluster owner initiates the migration and deposits sufficient ETH to fund the cluster's future operation runway under the ETH payment model. As part of the migration, the cluster's accounting is switched from SSV to ETH, and any remaining SSV balance is returned to the cluster owner. - -Migration is a one-way process - once a cluster is migrated to ETH payments, it cannot revert back to SSV-based payments. - -## Operator Payments & Fee Transition - -Transitioning to ETH payments defines a clear separation between how new operators are onboarded and how existing operators transition from SSV-based fees to ETH-based fees. - -### New Operators - -New operators onboard directly with ETH-denominated fees. From launch onward, operators registering in the network will not be able to define or configure fees in SSV and will operate exclusively under the ETH payment model. - -### Existing Operators - -Existing operators continue earning SSV-denominated fees only for clusters that have not yet migrated. These SSV fees continue to accrue, but operators are no longer able to modify or adjust their SSV fee configuration. Accrued fees can still be withdrawn. - -Once clusters migrate to ETH payments, or when new ETH-denominated clusters are onboarded, operators begin earning fees in ETH based on their assigned *default ETH fee* configuration. - -#### Default ETH Fee - -At launch, **all existing operators are assigned a default ETH fee** to ensure that operator pricing does not become a blocker for cluster migration: - -* Operators with a **0 SSV** fee default to a **0 ETH** fee - -* Operators with a **non-zero SSV fee** default to a network-defined ETH fee - -We propose setting the default ETH fee for non-zero SSV operators to an amount equivalent to approximately 0.5% of Ethereum staking rewards per 32 ETH validator. Based on a 2.9% ETH staking APR, this corresponds to: - -* 0.00928 ETH per validator per year - -Under this default: - -* A standard 4-operator cluster pays ~2% of staking rewards to operators, with each operator earning ~0.5% - -* Clusters with more than four operators pay proportionally more (e.g., a 7-operator cluster pays ~3.5%) - -The proposed default ETH operator fee was evaluated by examining the current fee structure on the SSV Network. At present, the weighted average fee charged by public operators is approximately **0.761 SSV**, which corresponds to roughly **0.1%** of Ethereum staking rewards. - -Over time, SSV-denominated operator fees have converged toward very low levels, resulting in a fee structure that no longer reflects the underlying cost, responsibility, or risk associated with operating validators. - -Against this backdrop, the proposed default ETH operator fee - set at **0.5%** of Ethereum staking rewards per operator, is intentionally and materially higher than the current network average. This higher starting point establishes a new baseline under the ETH-based model, from which operators can subsequently reprice based on market dynamics and competition. Any such fee adjustments remain subject to the existing fee update constraints and limitations. - -## Governance Parameters - -The transition to ETH payments introduces a set of new governance-controlled parameters that define the economic and risk boundaries of the protocol. A detailed evaluation of these parameters, including assumptions and methodology, is provided in the [Liquidation Collateral Parameter Evaluation](#liquidation-collateral-parameter-evaluation) and [Network Fee Implications](#network-fee-implications) sections of this proposal The values for the parameters discussed in the aforementioned sections are mentioned in those sections and below only as examples. - -| Variable | Description | Update function | Initial Value | -| :---- | :---- | :---- | :---- | -| *ethNetworkFee* | Protocol network fee charged in ETH. | updateNetworkFee(uint256 fee) | 0.000000003550929823 ETH (0.00928 ETH - annual) | -| *minimumLiquidationCollateral* | Minimum ETH collateral an ETH-denominated cluster must maintain; falling below this level contributes to liquidation eligibility. | updateMinimumLiquidationCollateral(uint256 amount) | 0.00094 ETH | -| *minimumBlocksBeforeLiquidation* | Minimum number of blocks an ETH-denominated cluster must maintain sufficient balance before becoming eligible for liquidation. | updateLiquidationThresholdPeriod(uint64 blocks) | 50190 (7 days) | -| *operatorMaxFee* | Maximum operator fee cap, setting a technical upper bound on operator fees denominated in ETH. This parameter exists as a protocol safety constraint to prevent extreme fee configurations and is not intended to express economic policy or target fee levels. | updateMaximumOperatorFee(uint64 maxFee) | | -| *defaultOperatorETHFee* | Default ETH-denominated operator fee applied to existing operators during the transition from SSV-denominated fees to ETH-denominated fees. | Not governance-controlled. The default value is defined in the contract and applied automatically; it exists solely to facilitate operator migration and ensure continuity during the transition period. | 0.000000001775464912 ETH (0.00464 ETH - annual) | - ---- - -# Effective Balance Accounting - -Effective Balance Accounting updates how fees, cluster runway, and liquidations are calculated across the SSV Network by aligning them with validators' actual effective balance, rather than assuming a fixed 32 ETH per validator. - -This change is required to natively support Ethereum's post-Pectra validator model, where a single validator can secure and earn rewards on significantly more than 32 ETH. Historically, this gap was partially addressed through off-chain mechanisms, but Effective Balance Accounting brings this logic fully on-chain and applies it consistently across network fees, operator fees, and cluster payments. - -Specifically, this issue was partially mitigated through the Incentivized Mainnet (IM) program, which relied on an off-chain script to calculate validator balances and deduct unpaid network fees from monthly incentive rewards. This approach had several limitations: it did not apply to operator fees, it relied on periodic off-chain reconciliation, and it would not function once fees are denominated in ETH, as ETH fees cannot be deducted from SSV-based rewards. - -As a result, validators with higher effective balances have remained only partially accounted for. With the transition to ETH payments, natively supporting effective balance accounting is no longer optional \- it is required to ensure all fees are correctly calculated, collected, and enforced within the protocol. - -## Motivation - -Moving to effective balance accounting is a long-overdue evolution of the SSV Network's core accounting model, following Ethereum's Pectra upgrade and the introduction of validators with variable effective balances. As validator structures on Ethereum have matured, the protocol must move beyond fixed assumptions and provide native support that improves correctness, reliability, and long-term sustainability across operators, clusters, and the network itself. - -* **Native support for consolidated validators** - With effective balance accounting in place, the protocol natively adjusts its accounting to validators with varying effective balances. Fees, runway calculations, and safety checks all scale directly with effective balance, eliminating the need for off-chain tools to fill this gap. - -* **Fair operator compensation** - Effective balance accounting enables operators to be compensated according to the actual effective balance they manage, rather than being paid under a fixed 32 ETH assumption, ensuring correct compensation for operators managing consolidated validators. - -* **Preserving network revenue** - Without native effective balance support, the network would be unable to correctly collect network fees from ETH-based clusters operating consolidated validators. The Incentivized Mainnet program previously mitigated this through off-chain deductions, but this approach cannot be applied to ETH-denominated fees. Supporting effective balance accounting natively is therefore critical to prevent revenue loss as the network transitions to ETH payments. - -## Accounting Changes - -Effective Balance Accounting changes how fees are calculated at the cluster level by replacing validator count as a proxy with the cluster's effective balance. - -### Existing Clusters (SSV-based) - -In the SSV-based model, validators act as a proxy for effective balance. - -Each validator is implicitly assumed to represent a fixed 32 ETH of effective balance. Fees therefore scale linearly with the number of validators in the cluster, regardless of how much effective balance those validators actually secure. - -![image|690x88, 50%](upload://p2BelvkqZe0zO4ofvF91O7Zpzp7.png) - -Under this model: - -* Fees are defined per validator - -* Total fees scale with validator count - -* Consolidated validators are not fully accounted for - -This model continues to apply to all SSV-based clusters. As a result: - -* Network fee deduction for compensation via the Incentivized Mainnet script continues to operate - -* Operators managing SSV-based clusters are not compensated based on the amount of stake they manage - -### New clusters (ETH-based) - -In the ETH-based model, effective balance becomes the billing unit. - -Fees are defined per 32 ETH of effective balance and scale with a cluster's total effective balance, rather than with validator count: - -![image|690x111, 50%](upload://uWnpB7vC9bYmwDXRceiHDTJHj9i.png) - -Here, *total effective balance* refers to the **cumulative effective balance of all validators belonging to the cluster**. All accounting is performed using this aggregated cluster-level value. - -As a result, ETH-based clusters pay fees proportional to the actual effective balance they secure, independent of how that balance is distributed across validator keys. - -Effective balance-based accounting applies only to ETH-based clusters. SSV-based clusters continue operating under the validator-count model until they migrate, after which this becomes the only accounting model used by the protocol. - -## Effective Balance Oracles - -In order to achieve the DAO's stated goal of decentralizing Ethereum but doing so in the most ETH aligned way, this document suggests for the DAO to adopt Effective Balance Oracles that will perform Effective Balance Accounting. In this regard, the Effective Balance Oracles on ssv.network play a similar role to that of validators on the Ethereum blockchain, both requiring a staking mechanism and possibly a delegation to a third-party performing the needed duties, thus fulfilling a crucial part of the process. While oracles don't validate transactions as validators do, they do maintain the integrity and security of the protocol by accurately attesting what validator effective balance is, which is key for the safety of the ssv.network as discussed below. - -For Effective Balance accounting to work natively, the protocol must be able to track the effective balance of validators across the network and reflect this data on-chain. Validator effective balances, however, exist only on Ethereum's consensus layer and cannot be accessed directly by smart contracts efficiently in a way that serves the purpose of this protocol. - -To fill this gap, it is proposed that the protocol will rely on a dedicated set of **Effective Balance Oracles**. - -Effective Balance Oracles are responsible for tracking validator effective balances on the beacon chain and enabling the protocol to keep its on-chain accounting aligned with real validator state as balances evolve over time. - -### Oracle Set Composition and Evolution - -#### Initial Permissioned Oracle Set - -At launch, the protocol will operate with a permissioned set of four Effective Balance Oracles, operating under a 3-of-4 threshold for oracle commitments. - -This initial configuration is intentionally temporary and is designed to mitigate early-stage operational and correctness risks. Effective Balance Oracles play a critical role in protocol accounting and liquidation safety, and incorrect or inconsistent balance updates could have direct and dire consequences. - -Beginning with a permissioned set allows the protocol to validate, in production, the full oracle workflow under controlled conditions. This approach reduces the risk associated with unproven implementations, misconfigured clients, or adversarial behavior during the initial rollout of effective balance accounting. - -Once the oracle workflow and assumptions have been validated and observed to operate reliably over time, the protocol is intended to transition toward a permissionless oracle model, as described in subsequent sections. - -**The DAO is responsible for electing the initial oracle set and overseeing its composition over time, including making changes if required to maintain correctness, availability, and operational reliability during the early phase of effective balance accounting.** - -#### Oracle Compensation (Initial Phase) - -During the initial permissioned phase, oracle operators will be compensated to cover the operational costs of running the Effective Balance Oracle infrastructure. - -Each oracle will receive a fixed compensation of **$250 per month denominated in SSV, with a 30-day trailing average calculated on the first of the month, transferred on each consequent first msig batch** to cover infrastructure and operational costs associated with running the oracle client. In addition, oracle operators will be **fully reimbursed by the DAO for all Ethereum transaction costs** incurred as part of their oracle duties, including balance updates and Merkle root submissions. This compensation model is intended to ensure operational sustainability at launch while keeping the system simple and avoiding premature complexity around protocol-level incentives. - -#### Future Permissionless Oracle Set - -After the initial permissioned phase, the oracle set is intended to transition to a permissionless model. In this phase, any participant will be able to operate an Effective Balance Oracle, and the composition of the active oracle set will be determined automatically through SSV staking delegation rather than direct DAO selection. - -Under this model, SSV stakers delegate their staking weight to oracle operators, using stake as voting power. The oracle set is then composed of the operators with the highest delegated stake, allowing the set to evolve and rotate over time based on staker preferences and observed performance. - -Stake-based delegation is a critical component of this design. Effective Balance Oracles directly influence protocol accounting and liquidation behavior, making correctness and reliability essential. By tying oracle selection to delegated stake, the protocol ensures that oracle operators are economically aligned with the system: operators with higher delegated stake are incentivized to behave correctly, while stakers can reallocate delegation away from underperforming or untrusted oracles. - -This mechanism enables the protocol to maintain decentralization and security without relying on manual selection by a trusted entity, while allowing the oracle set to adapt dynamically as conditions change. In this phase, a protocol-level compensation mechanism will also be introduced to sustainably reward oracle operators for their ongoing duties. - -### Effective Balance Updates - -Effective balance updates are performed in two steps, moving from global observation to cluster-level updates. - -#### Step 1: Snapshot and consensus - -Effective Balance Oracles continuously track validator effective balances on the beacon chain. At defined intervals, they take a snapshot of all validator balances, aggregate them per cluster, and construct a Merkle tree representing the effective balances of all clusters at that snapshot. - -To reach consensus on this snapshot, each oracle independently commits the Merkle root representing this snapshot. Once a threshold of oracle commitments is reached, the snapshot is accepted by the protocol as the authoritative and accurate view of effective balances for that point in time. This threshold-based mechanism ensures both the correctness of the data and that no single oracle can dictate balance updates. - -#### Step 2: Cluster balance updates - -Once a snapshot is accepted, cluster-level effective balances can be updated on-chain by submitting a proof derived from the committed Merkle tree for a specific cluster. - -Updating cluster balances is **permissionless**: anyone can submit a valid proof and bear the transaction cost. As a failsafe, Effective Balance Oracles are expected to periodically perform these updates themselves to ensure cluster balances remain current even if third parties do not act. - -When a cluster's effective balance is updated, the protocol updates all related accounting based on the new value. This affects cluster runway calculations as well as future network and operator fee accruals tied to the amount of effective balance being managed. If an update causes a cluster to fall below liquidation thresholds, the cluster can be liquidated as part of the same process, ensuring that increases in effective balance are always matched by sufficient funding and collateral. - -#### Operational Considerations for Balance Updates - -Because updates are performed through periodic cluster-level sweeps, validators added to or removed from a cluster are initially accounted for using a default assumption of 32 ETH per validator. The actual effective balance of these validators - such as in the case of consolidated validators - will only be reflected once the next sweep occurs. As a result, cluster owners must account for the potential impact of delayed updates on runway and fee accrual, particularly when adding validators with higher effective balances. - -## Governance Parameters - -Effective Balance Accounting introduces new governance-controlled parameters that define how oracle consensus is reached for effective balance snapshots. - -| Variable | Description | Update function | Initial Value | -| :---- | :---- | :---- | :---- | -| quorumBps | Quorum threshold (in BPS) required for committing an effective balance snapshot | setQuorumBps(uint16 quorum) | 7500 (75.00%) considering a ¾ threshold. | -| | Replaces an existing Oracle with another one. | replaceOracle(uint32 oracleId, address newOracle) | | - ---- - -# SSV Staking - -SSV Staking introduces a staking and delegation mechanism that enables SSV holders to support the operation and maintenance of the protocol. Through staking, participants lock SSV and delegate stake toward the selection of Effective Balance Oracles, which are responsible for maintaining accurate effective balance accounting within the network. - -In return for participating in this process, protocol fees denominated in ETH and generated by network usage are reflected through the staking mechanism in proportion to participation. This introduces a tokenomic model in which SSV functions as an ETH accrual token, with value derived directly from protocol usage. - -## Motivation - -SSV Staking strengthens the role of SSV holders within the network by expanding their responsibilities beyond passive ownership. Through staking, token holders take part in selecting the oracles responsible for maintaining core protocol functions, giving them a direct role in the ongoing operation and reliability of the system. - -This model places protocol maintenance in the hands of participants with long-term economic exposure to the network, while allowing responsibility to be distributed and adjusted over time through delegation. - -This approach mirrors the participation model used in Ethereum staking, where ETH holders contribute to network maintenance through delegation to node operators or staking services. Similarly, SSV Staking allows token holders to participate in maintaining the protocol through delegation, without requiring direct operation of oracle infrastructure, while preserving accountability and decentralization. - -By tying economic participation to long-term staking, SSV Staking also strengthens governance. Participants who benefit from sustained protocol usage and growth are more incentivized to actively engage in governance and contribute to decisions that support the protocol's long-term reliability and evolution - -## Staking and cSSV - -SSV holders can stake their tokens into the SSV Staking contract and receive **cSSV**, an ERC-20 token that represents their staked position at a **1:1 ratio**. - -cSSV represents a claim on the underlying staked SSV, as well as a proportional share of protocol fees accrued to stakers. - -As part of staking, stakers must **delegate** their staking voting power. This delegation determines the composition of the Effective Balance Oracle set, which is responsible for maintaining effective balance data on-chain. - -In the temporary initial phase, staking delegation is automatically split evenly across the DAO-elected oracle set, providing a smooth starting point while establishing the foundation for stake-driven oracle selection in future phases. - -## Rewards and Claiming - -Protocol fees accrue continuously as validators operate on the SSV Network and generate ongoing network fees. Stakers earn a **pro-rata share of ETH-denominated fees**, based on their share of the total staked SSV. - -Rewards can be claimed at any time without unstaking, and claiming does not affect the staking position. - -When cSSV is transferred, rewards accrued up to that point remain claimable by the original holder, while the new holder begins accruing rewards only from the moment they receive the cSSV. - -## Unstaking - -Unstaking is a two-step process: - -First, the staker submits a withdrawal request, which locks the specified amount of cSSV and stops reward accrual for that portion. It is proposed that the protocol will launch with a **7-day lock period**. - -Once the lock period ends, the staker can finalize the unstake. The locked cSSV is burned, and the underlying SSV is returned at a 1:1 ratio relative to the original stake. - -## Governance Rights - -Staked SSV, represented by cSSV, **retains full governance and voting power**. Holding cSSV does not reduce a user's ability to participate in DAO governance compared to holding unstaked SSV. - -This ensures that participants who stake their SSV continue to influence the protocol's direction, while aligning governance participation with sustained economic exposure to the network. - -## Governance Parameters - -SSV Staking introduces new governance-controlled parameters that define the lifecycle and constraints of staking and unstaking within the protocol. - -| Variable | Description | Update function | Initial Value | -| :---- | :---- | :---- | :---- | -| cooldownDuration | Unstake cooldown duration (in blocks): the period users must wait between requesting an unstake and being able to withdraw their unlocked SSV. | setUnstakeCooldownDuration(uint64 blocks) | 50120 (7 days) | - -# Protocol Transition and Governance Implications - -The introduction of ETH-denominated payments and native effective balance accounting represents a structural upgrade to the SSV Network. Beyond the core protocol design, these changes require deliberate updates to incentives, parameters, and legacy governance decisions. - -## Incentivized Mainnet Transition - -With the introduction of ETH payments, network fees for ETH-denominated clusters are no longer compatible with the Incentivized Mainnet fee deduction mechanism (Incentivized Mainnet rewards are distributed in SSV, while network fees for these clusters are paid in ETH). As a result, network fees cannot be deducted from Incentivized Mainnet rewards for validators operating as part of ETH-denominated clusters. - -At the same time, ETH-denominated clusters operate under the new effective balance accounting model, where network fees are calculated and collected natively by the protocol. Because these fees are already enforced on-chain, applying additional off-chain deductions via the Incentivized Mainnet script becomes obsolete for ETH-denominated clusters. - -To reflect this distinction, the Incentivized Mainnet script will be updated to differentiate between legacy SSV-based clusters and ETH-denominated clusters: - -* **ETH-denominated clusters -** Network fee deductions are removed. - -* **SSV-based clusters -** Network fees continue to be deducted from Incentivized Mainnet rewards under the existing model. - -This update ensures that Incentivized Mainnet behavior remains aligned with the accounting and fee mechanisms applicable to each cluster type, while correctly supporting ETH-denominated clusters under the upgraded protocol model. - ---- - -## Liquidation Collateral Parameter Evaluation - -The liquidation collateral and liquidation threshold parameters currently in effect were derived using a DAO-approved calculation framework, most recently formalized in [DIP-44](https://snapshot.org/#/s:mainnet.ssvnetwork.eth/proposal/0x5ab8383681f4efec61c1e89388477e18de3f1b9a34ce1fef001e55043a8f3273). With the introduction of ETH payments, the protocol introduces dedicated liquidation parameters for ETH-denominated clusters. As part of defining these new parameters, it is appropriate to revisit the existing calculation framework to ensure that its underlying assumptions remain valid under current network conditions. - -### Revisiting the Calculation Framework - -The existing framework relies on a **1-year historical lookback window** for gas price data. This choice was appropriate at the time of adoption, when gas prices were higher and more volatile. - -However, recent Ethereum network conditions differ materially from those reflected in earlier datasets. In particular: - -* Average gas prices have declined significantly - -* Gas price volatility has stabilized - -* Sustained Layer 2 adoption has structurally reduced congestion on Ethereum mainnet - -As a result, a full 1-year lookback increasingly overweights historical periods that are no longer representative of current or expected near-term conditions. - -To illustrate this shift, the following charts compare historical gas price behavior under different lookback windows: - -![image|690x280](upload://8hRge5dE8zSuB6g0BBWEvKnMusw.png) - -*Ethereum gas prices over the last year (reference \- [ycharts.com](https://ycharts.com/indicators/ethereum_average_gas_price))* - -![image|690x267](upload://joYrIivA0jpY5kms7LbgyHIxov9.png) - -*Ethereum gas prices over the last 6 months (reference \- [ycharts.com](https://ycharts.com/indicators/ethereum_average_gas_price))* - -Under a 1-year lookback window: - -* **Average gas price:** \~3.51 GWEI - -* **Gas price standard deviation:** \~4.63 GWEI - -Under a 6-month lookback window: - -* **Average gas price:** \~1.86 GWEI - -* **Gas price standard deviation:** \~1.86 GWEI - -This represents a substantial reduction in both average gas costs and volatility. Continuing to rely on a 1-year window would therefore embed outdated assumptions into the liquidation model, resulting in parameters that are more conservative than current network conditions justify. - -For this reason, it is proposed to update the calculation framework to use a **rolling 6-month lookback window**. By grounding liquidation cost assumptions in more recent gas price data, the framework reflects both a lower average gas cost and reduced volatility. This, in turn, lowers the estimated worst-case cost of executing a liquidation and reduces the amount of collateral required to safely incentivize liquidators, improving capital efficiency without weakening safety guarantees. - -This change applies to the framework itself, and therefore affects all parameter evaluations derived from it going forward. - -### Impact on Existing SSV-Based Parameters - -Applying the updated 6-month lookback window to the existing framework results in revised parameter values for SSV-denominated clusters: - -| Parameter | Current Value | Proposed Value | Deviance | -| :---- | :---- | :---- | :---- | -| *minimumLiquidationCollateralSSV* | 1.53 SSV | 0.883 SSV | \-42.52% (\>15%) | -| *minimumBlocksBeforeLiquidationSSV* | 14 days | 100380 (14 days) | 0% (\<15%) | - -[*Calculations sheet*](https://docs.google.com/spreadsheets/d/1pa7VDZywlc5He2rS7qVbAKVv2KQrj7wZ-yvabpMRvUo/edit?usp=sharing) - -These updated values are a direct consequence of revised inputs rather than a change in liquidation logic. They are presented to maintain methodological consistency with prior DAO decisions. - -The DAO may choose to adopt these updated SSV-denominated values as part of this proposal or defer their application to a separate governance decision. - -### ETH-Denominated Liquidation Parameters - -In parallel to the existing SSV-denominated parameters, ETH-denominated clusters require a **dedicated set of liquidation parameters** derived from the same framework but adjusted to reflect their materially different risk profile. - -#### Reduced Risk from Removing SSV from the Calculation Framework - -Under the legacy SSV-based model, liquidation parameters were required to account for a cross-asset mismatch: liquidation execution costs are paid in ETH, while liquidation rewards and fee accrual are denominated in SSV. This required incorporating assumptions around SSV/ETH price ratios and their deviations, increasing uncertainty and necessitating more conservative parameter values. - -By removing SSV from the calculation framework, ETH-denominated clusters eliminate this cross-asset exposure entirely. Network fees, collateral, and liquidation execution are all denominated in ETH, resulting in a more predictable and tightly bounded liquidation model. - -#### Revised Liquidation Functions for ETH-Denominated Clusters - -With SSV-denominated components removed from the calculation framework, the existing liquidation functions can be simplified and recalibrated for ETH-denominated accounting. - -The calculation framework uses the following formulas for SSV-denominated clusters: - -* Minimum Liquidation Collateral - -![image|690x57, 50%](upload://3dvCyE3Kh3eHUJPOWEt6TMrHSSY.png) - -* Liquidation Threshold - -![image|690x66, 50%](upload://ae570VVYXDfsFMPbdp5oe3InDRN.png) - -New formulas for ETH-denominated clusters: - -* Minimum Liquidation Collateral - -![image|690x97, 50%](upload://eBvHtGoMdNmprbjB6n7ckxMoo9q.png) - -* Liquidation Threshold - -![image|690x88, 50%](upload://xy3dPLIc4Rxe43ouHptc4woj9jR.png) - -These ETH-denominated functions maintain the same safety objectives as the legacy framework, while allowing parameters to reflect the reduced risk profile enabled by ETH-denominated accounting. - -#### Proposed Initial Parameters for ETH-Denominated Clusters - -Applying the ETH-specific liquidation functions yields the following proposed **initial liquidation parameters** for ETH-denominated clusters: - -| Parameter | Current Value | Proposed Value | Deviance | -| :---- | :---- | :---- | :---- | -| *minimumLiquidationCollateral* | - | 0.00094 ETH | 100% (>15%) | -| *minimumBlocksBeforeLiquidation* | - | 50190 (7 days) | 100% (>15%) | - -[*Calculations sheet*](https://docs.google.com/spreadsheets/d/1pa7VDZywlc5He2rS7qVbAKVv2KQrj7wZ-yvabpMRvUo/edit?usp=sharing) - -These values are proposed as initial settings and remain fully governance-controlled. As with all liquidation-related parameters, the DAO retains the ability to adjust them as network conditions and assumptions evolve. - ---- - -## Network Fee Implications - -### Network Fee for ETH-Denominated Clusters - -As part of the transition to ETH-denominated clusters, the protocol introduces a **dedicated network fee denominated in ETH**, applied to ETH-denominated clusters. - -Under the legacy SSV-based model, the network fee calculation incorporated an ETH/SSV conversion factor, reflecting the fact that protocol fees were accrued in SSV while staking rewards and execution costs were denominated in ETH. With ETH-denominated clusters, this conversion is no longer required. - -For ETH-denominated clusters, the network fee is calculated natively in ETH as: - -![image|690x70, 50%](upload://ri9U6MpvfFhv8iWC0aOubQIUgiM.png) - -This formulation removes SSV entirely from the network fee calculation and aligns fee accrual directly with ETH-denominated validator rewards. - -##### Proposed Network Fee - -Applying the ETH-denominated network fee formulation yields the following **proposed initial network fee parameter** for ETH-denominated clusters: - -| Parameter | Current Value | Proposed Value | Deviance | -| :---- | :---- | :---- | :---- | -| *ethNetworkFee* | – | 0.000000003550929823 ETH (0.00928 ETH \- annual) | 100% (\>15%) | - -### Implications for the Legacy SSV Network Fee - -Once all clusters have migrated from SSV-based accounting to ETH-denominated clusters, the protocol will no longer rely on SSV-denominated network fees or ETH/SSV conversion logic. - -The existing governance mechanism for bounding the SSV network fee via a ratio-based maximum, as defined in [DIP-49](https://snapshot.org/#/s:mainnet.ssvnetwork.eth/proposal/0x5300de7fd0df8c07b06b1e4ad71bdf036945b26787b0157d70ab80fee3ad4126), was introduced to constrain the network fee under a model where fees were denominated in SSV and implicitly exposed to ETH price dynamics. - -Under an ETH-denominated fee model, this constraint becomes irrelevant. With network fees calculated and collected directly in ETH, there is no longer an SSV/ETH ratio to bound, and governance of the protocol network fee is expressed solely through the ETH-denominated network fee parameter. - ---- - -## Future Consideration: Public-Good DVT Clusters (SSV-Based) - -In future versions of the protocol, the SSV Network may explore supporting SSV-based clusters as a dedicated mode for public-good DVT use cases. - -Under this model, public-good DVT clusters would operate without paying protocol-level network fees. In exchange, these clusters would not participate in incentive programs such as the Incentivized Mainnet (IM). This preserves economic neutrality while allowing certain DVT deployments to operate purely as public infrastructure. - -This approach acknowledges that while SSV-based clusters are being deprecated for ongoing commercial operation, they may still serve a purpose as a constrained and clearly defined execution mode for non-commercial validator setups - such as research, experimentation, or ecosystem infrastructure - without distorting the protocol's economic model. - -This concept is not part of the current release and is presented as a potential future extension to support public-good DVT use cases in a principled and economically isolated manner. diff --git a/ssv-review/planning/CONSOLIDATED-AUDIT-FINDINGS.md b/ssv-review/planning/CONSOLIDATED-AUDIT-FINDINGS.md deleted file mode 100644 index b642e6d0..00000000 --- a/ssv-review/planning/CONSOLIDATED-AUDIT-FINDINGS.md +++ /dev/null @@ -1,785 +0,0 @@ -# Consolidated Audit Findings — SSV Network v2.0.0 - -**Generated:** 2026-03-17 -**Sources:** 9 independent audit scans (state invariant, behavioral state, input/arithmetic safety, semantic guard, SCV cheatsheet, staking rewards, oracle/flash loan, DoS/griefing, external call safety) -**Branch:** `ssv-staking` -**Cross-reference:** `ssv-review/planning/MAINNET-READINESS.md` - ---- - -## Priority Summary - -| ID | Description | Type | Severity | Resolution | -|----|-------------|------|----------|------------| -| CA-01 | Silent uint64 truncation in `networkTotalEarnings` DAO earnings | Arithmetic Safety | Medium-High | Already fixed (ref MAINNET-READINESS QUALITY-12) | -| CA-02 | Fees permanently lost when `totalStaked == 0` in `_syncFees` | Staking Rewards | Medium | Open (ref BUG-6 — mitigated by deployment sequencing) | -| CA-03 | Aggregate vs per-cluster rounding conservation law violation | Arithmetic Safety | Medium | Closed (ref BUG-19 — accepted known behavior) | -| CA-04 | Unsafe uint128 to uint64 cast in operator earnings accumulation | Arithmetic Safety | Medium | Already fixed (ref MAINNET-READINESS QUALITY-12) | -| CA-05 | uint64 overflow in `blockDiffEthFee` operator snapshot DoS | Arithmetic Safety | Medium | Open | -| CA-06 | Oracle quorum can be set to zero | Oracle Security | Medium | Already fixed (ref MAINNET-READINESS SEC-20) | -| CA-07 | Oracle weight assumes all delegation slots active | Oracle Security | Medium | Open | -| CA-08 | `migrateClusterToETH` missing `nonReentrant` modifier | Reentrancy | Medium | Already closed (ref MAINNET-READINESS SEC-6) | -| CA-09 | `accEthPerShare` precision loss at scale | Staking Rewards | Medium | Closed (ref BUG-18 — accepted as part of accumulator model) | -| CA-10 | Staking reward dilution via flash loan | Flash Loan | Medium | Mitigated by design (settlement ordering + 7-day cooldown) | -| CA-11 | `withdrawUnlocked` gas scales with pending request count | DoS / Griefing | Medium | Open (self-DoS only, capped at 2000) | -| CA-12 | External whitelisting contract can DoS validator registration | DoS / Griefing | Medium | Open (operator self-DoS only) | -| CA-13 | `onCSSVTransfer` hook can block all cSSV transfers | DoS / Griefing | Medium | Open (governance upgrade risk only) | -| CA-14 | `onCSSVTransfer` missing `nonReentrant` modifier | Reentrancy | Low | Already closed (ref MAINNET-READINESS SEC-7) | -| CA-15 | `commitRoot` accepts zero merkle root | Input Validation | Low | Already closed (ref MAINNET-READINESS SEC-14) | -| CA-16 | `removeOperator` doesn't clear `operatorEthVUnits` | State Cleanup | Low | Already fixed (ref MAINNET-READINESS QUALITY-10) | -| CA-17 | Dust trapped on reward claim with zero cSSV balance | Staking Rewards | Low | Already fixed (ref MAINNET-READINESS SEC-16b) | -| CA-18 | Governance fee params lack min/max bounds | Input Validation | Low | Open (ref MAINNET-READINESS SEC-17) | -| CA-19 | uint64 overflow in unstake unlock time calculation | Arithmetic Safety | Low | Open | -| CA-20 | Zero-value deposit/withdrawal accepted | Input Validation | Low | Already closed (ref MAINNET-READINESS SEC-16) | -| CA-21 | Oracle quorum weight manipulation via cSSV supply | Oracle Security | Low | Mitigated by design (equal-weight model) | -| CA-22 | No staleness check on committed root age | Oracle Security | Low | Open (informational) | -| CA-23 | Raw transfer/transferFrom instead of SafeERC20 | External Call Safety | Low | Open (no current risk, SSV is standard ERC20) | -| CA-24 | External whitelisting contract call without gas cap | External Call Safety | Low | Open (same root cause as CA-12) | -| CA-25 | Operator fee execution window block stuffing | DoS / Griefing | Low | Open (economically infeasible on L1) | -| CA-26 | Competing oracle proposals leave ghost state | State Cleanup | Low | Open | -| CA-27 | `ClusterBalanceUpdated` emitted for SSV clusters with unchanged state | Event Correctness | Low | Open | -| CA-28 | `claimEthRewards` dual balance check redundancy | Code Quality | Low | Open | -| CA-29 | Dead code in `_executeLiquidation` wrong accounting direction | Code Quality | Info | Open | -| CA-30 | `rescueERC20` no module-level access control | Access Control | Info | Open (proxy-level `onlyOwner` sufficient) | -| CA-31 | CLAUDE.md stale docs on `reactivate` nonReentrant | Documentation | Info | Open | -| CA-32 | No SafeCast used anywhere (systemic) | Arithmetic Safety | Info | Open | -| CA-33 | Rounding direction analysis | Arithmetic Safety | Info | No vulnerability | -| CA-34 | `_syncFees` defensive `current < previous` path | Code Quality | Info | Open | -| CA-35 | `onCSSVTransfer` virtual modifier override risk | Upgrade Safety | Info | Open | -| CA-36 | Flash loan attack surface — core cluster operations | Flash Loan | Info | No vulnerability | -| CA-37 | No circular price dependencies | Oracle Security | Info | No vulnerability | -| CA-38 | Oracle replacement mid-round voting edge case | Oracle Security | Info | Correctly handled | -| CA-39 | ETH transfer pattern (push payments) | External Call Safety | Info | Correctly implemented | -| CA-40 | `delegatecall` usage — trusted targets only | External Call Safety | Info | Correctly implemented | -| CA-41 | No approve race conditions | External Call Safety | Info | No vulnerability | -| CA-42 | Fee-on-transfer / rebasing token compatibility | External Call Safety | Info | Not applicable | -| CA-43 | Oracle `hasVoted` storage never cleaned | State Cleanup | Info | By design, acceptable growth | - ---- - -## Detailed Findings - ---- - -### MEDIUM-HIGH - ---- - -#### CA-01: Silent uint64 Truncation in `networkTotalEarnings()` — DAO Earnings Lost - -**Severity:** Medium-High -**Type:** Arithmetic Safety -**Location:** `contracts/libraries/ProtocolLib.sol:84-90` -**Resolution:** Already fixed (ref MAINNET-READINESS QUALITY-12) - -**Source:** STATE-INVARIANT-REPORT.md (SIV-01) -**Cross-references:** z_input_arithmetic_safety_scan.md (Finding 2), z_behavioral_state.md (F-3), z_staking_audit_report.md (Finding #2) - -**Description:** - -The `networkTotalEarnings()` function computes `earningsUnits` as `uint128` but then truncates to `uint64` via `PackedETH.wrap(uint64(earningsUnits))`. In Solidity 0.8, explicit narrowing casts silently truncate without reverting. If the product `blockDelta * networkFee_raw * totalVUnits / BPS_DENOMINATOR` exceeds `type(uint64).max` (~1.844e19), the result wraps silently. - -```solidity -uint128 earningsUnits = (idx * PackedETH.unwrap(sp.ethNetworkFee) * units) / BPS_DENOMINATOR; -return sp.ethDaoBalance.add(PackedETH.wrap(uint64(earningsUnits))); -// ^^^^^^^^^^^^^^^^^^^^^^^^ -// Silent truncation if earningsUnits > type(uint64).max -``` - -**Root Cause:** `updateNetworkFee()` does not enforce an upper bound on `ethNetworkFee`. The only constraint is `PackedETHLib.pack(fee)` not reverting, which allows fees up to `type(uint64).max * ETH_DEDUCTED_DIGITS`. Combined with even modest `daoTotalEthVUnits`, the product overflows `uint64`. - -**Impact:** -- DAO earnings silently truncated — `ethDaoBalance` understated -- `stakingEthPoolBalance` (synced from `ethDaoBalance`) also understated — staking rewards distributed are less than earned -- The "lost" ETH stays in the contract but can never be claimed by stakers -- Requires malicious/negligent governance to set extreme fee values — not exploitable by external actors - -**Practical reachability:** With current proposed parameters (`fee_packed ~ 35,509`, `daoTotalEthVUnits ~ 1e9`, `blockDelta ~ 2.5e6`), `earningsUnits ~ 8.87e15` — fits in `uint64`. Overflow requires either extreme governance-set fee values or decades without DAO earnings settlement. - -**Recommendation:** Apply `SafeCast.toUint64(earningsUnits)` to revert on overflow, or add an upper bound in `updateNetworkFee()`. - -**Fix (QUALITY-12):** A lightweight `_safeUint64(uint128)` helper was added to `SSVCoreTypes.sol` with a custom `SafeCastOverflow` error. The unsafe cast in `ProtocolLib.sol:89` was replaced with `_safeUint64(earningsUnits)`. - ---- - -### MEDIUM - ---- - -#### CA-02: Fees Permanently Lost When `totalStaked == 0` in `_syncFees` - -**Severity:** Medium -**Type:** Staking Rewards -**Location:** `contracts/modules/SSVStaking.sol:165-184` -**Resolution:** Open (ref MAINNET-READINESS BUG-6 — mitigated by deployment sequencing) - -**Source:** STATE-INVARIANT-REPORT.md (SIV-04) -**Cross-references:** z_staking_audit_report.md (Finding #3), z_behavioral_state.md (F-1) - -**Description:** - -When `totalStaked == 0` (no cSSV exists), `_syncFees` skips the `accEthPerShare` update but still advances `stakingEthPoolBalance` to `current`. Fees accrued during the zero-supply period are permanently lost — they've been debited from `ethDaoBalance` but never reach stakers. - -```solidity -uint256 totalStaked = ICSSVToken(CSSV_ADDRESS).totalSupply(); -if (totalStaked != 0) { - newFeesWei = PackedETHLib.unpack(packedNewFees); - s.accEthPerShare += uint128((newFeesWei * PRECISION) / totalStaked); -} -s.stakingEthPoolBalance = current; // Advanced regardless! -``` - -**Impact:** Network fees earned during periods with zero cSSV supply are permanently non-distributable. Relevant during protocol bootstrap or black swan events where all SSV is unstaked. - -**Recommendation:** Either (a) defer `stakingEthPoolBalance` advancement when `totalStaked == 0`, or (b) initialize `stakingEthPoolBalance = sp.networkTotalEarnings()` at staking module initialization so the first `_syncFees` only distributes fees from that point forward. Note: option (a) gives all accumulated fees to the first staker, which could incentivize front-running. - ---- - -#### CA-03: Aggregate vs Per-Cluster Rounding Conservation Law Violation - -**Severity:** Medium -**Type:** Arithmetic Safety -**Location:** `contracts/libraries/OperatorLib.sol:52-72`, `contracts/libraries/ProtocolLib.sol:84-90`, `contracts/libraries/ClusterLib.sol:306-321` -**Resolution:** Closed (ref MAINNET-READINESS BUG-19 — accepted known behavior) - -**Source:** STATE-INVARIANT-REPORT.md (SIV-02) - -**Description:** - -Each cluster pays fees proportional to its own `vUnits` (floor division), but operators earn proportional to their aggregate `effectiveVUnits` across ALL clusters (also floor division). Due to the mathematical property `floor(a*x/n) + floor(a*y/n) <= floor(a*(x+y)/n)`, operators and the DAO virtually earn slightly more than clusters collectively pay, creating a slow insolvency drift. - -**Bounded magnitude:** Per settlement: at most `(numClusters - 1) * ETH_DEDUCTED_DIGITS` wei = `(N-1) * 100,000 wei`. Per year (2.5M blocks) with 1,000 clusters: ~0.00025 ETH/year. - -**Recommendation:** Document as a known accepted issue. No code change required unless operating at extreme scale. - ---- - -#### CA-04: Unsafe uint128 to uint64 Cast in Operator Earnings Accumulation - -**Severity:** Medium -**Type:** Arithmetic Safety -**Location:** `contracts/libraries/OperatorLib.sol:68-69, 93-94, 306-307` -**Resolution:** Already fixed (ref MAINNET-READINESS QUALITY-12) - -**Source:** z_input_arithmetic_safety_scan.md (Finding 1) -**Cross-references:** z_scv-scan.md (SCV-05) - -**Description:** - -The operator earnings delta is computed as `uint128` but silently truncated to `uint64` when stored via `PackedETH.wrap(uint64(delta))`. If `delta` exceeds `type(uint64).max`, operator earnings are permanently lost with no revert. - -```solidity -uint128 delta = (uint128(blockDiffEthFee) * uint128(effectiveVUnits)) / BPS_DENOMINATOR; -operator.ethSnapshot.balance = operator.ethSnapshot.balance.add(PackedETH.wrap(uint64(delta))); -``` - -**Practical reachability:** With realistic parameters (50,400 blocks/week, packed fee ~35,500, 2,000 validators at max EB): `delta ~ 2.29e14` — fits in `uint64`. Overflow requires pathological conditions (decades without snapshot updates or extreme fee values). - -**Recommendation:** Use `SafeCast.toUint64(delta)` to fail loudly on overflow instead of silently truncating. - -**Fix (QUALITY-12):** The `_safeUint64(uint128)` helper added to `SSVCoreTypes.sol` replaced all 3 unsafe casts in `OperatorLib.sol` (lines 69, 94, 307). Overflow now reverts with `SafeCastOverflow`. - ---- - -#### CA-05: uint64 Overflow in `blockDiffEthFee` — Operator Snapshot DoS - -**Severity:** Medium -**Type:** Arithmetic Safety -**Location:** `contracts/libraries/OperatorLib.sol:58, 85` -**Resolution:** Open - -**Source:** z_behavioral_state.md (F-2) - -**Description:** - -```solidity -uint64 blockDiffEthFee = (currentBlock - operator.ethSnapshot.block) * PackedETH.unwrap(operator.ethFee); -``` - -The multiplication of `uint32 blockDiff * uint64 ethFee` produces `uint64`. Solidity 0.8 checked arithmetic reverts on overflow. Overflow occurs when `fee_packed > ~4.28e9`, corresponding to an actual fee > ~1,100 ETH/year per vUnit. While absurdly high for a real operator, `operatorMaxFee` has no upper-bound check against this threshold. - -**Impact:** If governance sets `operatorMaxFee` to an extreme value and an operator adopts it, any call to `updateSnapshotSt`/`updateSnapshot` reverts with arithmetic overflow. All cluster operations involving this operator are permanently blocked. Recovery via `reduceOperatorFee` also fails because it calls `updateSnapshot` internally. - -**Recommendation:** Upcast before multiplication: `uint128 blockDiffEthFee = uint128(currentBlock - operator.ethSnapshot.block) * uint128(PackedETH.unwrap(operator.ethFee))`. Also add an absolute cap in `updateMaximumOperatorFee`. - ---- - -#### CA-06: Oracle Quorum Can Be Set to Zero - -**Severity:** Medium -**Type:** Oracle Security -**Location:** `contracts/modules/SSVDAO.sol:252-258` -**Resolution:** Already fixed (ref MAINNET-READINESS SEC-20) - -**Source:** z_scv-scan.md (SCV-01) -**Cross-references:** z_input_arithmetic_safety_scan.md (Finding 3) - -**Description:** - -The `updateQuorumBps` function allowed `quorumBps = 0`. With zero quorum, `threshold = 0` in `commitRoot()`, so any single oracle vote immediately commits a root, bypassing multi-oracle consensus. A compromised oracle could commit a fraudulent Merkle root containing arbitrary effective balances. - -**Resolution:** Fixed via MAINNET-READINESS SEC-20 — `quorumBps` now validates `!= 0 && <= 10_000`. - ---- - -#### CA-07: Oracle Weight Assumes All Delegation Slots Are Active - -**Severity:** Medium -**Type:** Oracle Security -**Location:** `contracts/modules/SSVDAO.sol:199` -**Resolution:** Open - -**Source:** z_scv-scan.md (SCV-02) - -**Description:** - -The oracle weight calculation divides `totalStaked` by `s.defaultOracleIds.length`, which is always 4 (fixed-size array `uint32[MAX_DELEGATION_SLOTS]`). If fewer than 4 oracle slots are populated, active oracles cannot reach quorum. For example, with 2 oracles and 75% quorum: `2 * (totalStaked/4) = 50%` — never reaches 75%. - -**Impact:** The EB root commitment system becomes permanently stuck until all 4 slots are filled. - -**Recommendation:** Track the count of active oracle slots and use that for weight calculation, or count non-zero entries in `defaultOracleIds` dynamically. - ---- - -#### CA-08: `migrateClusterToETH` Missing `nonReentrant` Modifier - -**Severity:** Medium -**Type:** Reentrancy -**Location:** `contracts/modules/SSVClusters.sol:259` -**Resolution:** Already closed (ref MAINNET-READINESS SEC-6 — no callback risk) - -**Source:** z_semantic_guard_scan.md (SGA-01) -**Cross-references:** z_scv-scan.md (SCV-06) - -**Description:** - -`migrateClusterToETH` modifies cluster state, operator state, DAO accounting, and EB deviation accounting, then performs an external ERC20 token transfer via `CoreLib.transferTokenBalance` — all without `nonReentrant`. 10 of 11 functions with external transfers are protected. - -**Mitigating factors:** The SSV token is a standard ERC20 without transfer callbacks. CEI pattern is followed — all state updates complete before the transfer. The SSV cluster hash is deleted before the transfer, so re-migration would revert. - -**Resolution:** Closed — no callback risk with standard ERC20 SSV token. - ---- - -#### CA-09: `accEthPerShare` Precision Loss at Scale - -**Severity:** Medium -**Type:** Staking Rewards -**Location:** `contracts/modules/SSVStaking.sol:202` -**Resolution:** Closed (ref MAINNET-READINESS BUG-18 — accepted as part of accumulator model) - -**Source:** z_staking_audit_report.md (Finding #1) -**Cross-references:** z_scv-scan.md (SCV-04), z_input_arithmetic_safety_scan.md (Finding 9) - -**Description:** - -The `accEthPerShare` accumulator increment can round to zero when `newFeesWei * PRECISION < totalStaked`: - -```solidity -s.accEthPerShare += uint128((newFeesWei * PRECISION) / totalStaked); -``` - -If `totalStaked > 1e23` (100,000 SSV tokens) and `newFeesWei` is at the minimum packed increment (100,000 wei), the increment rounds to zero. Those fees are absorbed into `stakingEthPoolBalance` but never distributed — permanently orphaned. - -**Impact:** Low economic impact under current parameters, but fees are permanently lost from the staker pool. Over extended operation, orphaned fees accumulate silently. - -**Recommendation:** Defer `stakingEthPoolBalance` advancement when `accEthPerShare` increment rounds to zero, so small fees accumulate to the next sync. - ---- - -#### CA-10: Staking Reward Dilution via Flash Loan - -**Severity:** Medium -**Type:** Flash Loan -**Location:** `contracts/modules/SSVStaking.sol:183` -**Resolution:** Mitigated by design - -**Source:** z_oracle_flashloan_scan.md (Finding 2) - -**Description:** - -An attacker could attempt to dilute staking rewards by flash-borrowing SSV, calling `stake()` to inflate cSSV supply, then claiming rewards. - -**Why this is mitigated:** -1. Settlement ordering in `stake()`: `_syncFees()` runs at OLD `totalSupply`, then `_settle()` at OLD balance, THEN cSSV is minted. Attacker only earns rewards from fees accruing after their stake. -2. The 7-day unstaking cooldown prevents flash-loan-in-single-tx exploitation. -3. Residual risk is economic dilution inherent to any pro-rata staking system, not a contract bug. - ---- - -#### CA-11: `withdrawUnlocked` Gas Scales with Pending Request Count - -**Severity:** Medium -**Type:** DoS / Griefing -**Location:** `contracts/modules/SSVStaking.sol:230` -**Resolution:** Open (self-DoS only, capped at 2000) - -**Source:** z_dos_griefing_scan.md (Finding 1) - -**Description:** - -`calculateTotalUnfrozenBalance` iterates over the user's entire `withdrawalRequests[]` array. While capped at `MAX_PENDING_REQUESTS = 2000`, a user who accumulates many small unstake requests faces high gas costs. Worst case (all 2000 unlocked): ~11M gas — within block limit but expensive. - -**Impact:** Self-inflicted only — each `requestUnstake` requires burning cSSV. User's own funds locked behind expensive withdrawal. Cannot withdraw in smaller batches. - -**Recommendation:** Consider adding a paginated withdrawal function that limits how many requests are processed per call. - ---- - -#### CA-12: External Whitelisting Contract Can DoS Validator Registration - -**Severity:** Medium -**Type:** DoS / Griefing -**Location:** `contracts/libraries/OperatorLib.sol:167, 203-204` -**Resolution:** Open (operator self-DoS only) - -**Source:** z_dos_griefing_scan.md (Finding 2) -**Cross-references:** z_external_call_scan.md (Finding 2) - -**Description:** - -During validator registration, if an operator has a whitelisting contract set, the function calls `ISSVWhitelistingContract(whitelistedAddress).isWhitelisted(msg.sender, operatorId)`. If this external contract reverts unconditionally, consumes excessive gas, or enters an infinite loop, no one can register validators with that operator. - -**Mitigating factors:** Only the operator owner can set a whitelisting contract. The operator can remove it at any time. Existing validators are unaffected. - -**Recommendation:** Consider wrapping the external `isWhitelisted` call in a try/catch with a gas limit. - ---- - -#### CA-13: `onCSSVTransfer` Hook Can Block All cSSV Transfers - -**Severity:** Medium -**Type:** DoS / Griefing -**Location:** `contracts/modules/SSVStaking.sol:173` -**Resolution:** Open (governance upgrade risk only) - -**Source:** z_dos_griefing_scan.md (Finding 3) - -**Description:** - -The cSSV token calls `onCSSVTransfer(from, to, amount)` on every transfer. If the staking module is upgraded to a buggy version where `_syncFees` reverts, all cSSV transfers are blocked — creating a single point of failure that freezes the entire cSSV token economy. - -**Mitigating factors:** This is an admin/upgrade risk, not an external attacker vector. The proxy upgrade pattern means the DAO can deploy a fix. - -**Recommendation:** Consider adding a circuit breaker or try/catch wrapper in the cSSV token for the `onCSSVTransfer` hook. - ---- - -### LOW - ---- - -#### CA-14: `onCSSVTransfer` Missing `nonReentrant` Modifier - -**Severity:** Low -**Type:** Reentrancy -**Location:** `contracts/modules/SSVStaking.sol:173` -**Resolution:** Already closed (ref MAINNET-READINESS SEC-7 — trusted cSSV contract) - -**Source:** z_semantic_guard_scan.md (SGA-02) -**Cross-references:** z_external_call_scan.md (Finding 3) - -**Description:** - -`onCSSVTransfer` modifies staking accumulator state without `nonReentrant`, while 5 of 6 other accumulator-modifying staking functions are protected. Currently safe because the function is only callable by the immutable `CSSV_ADDRESS` and cSSV is a standard ERC20 with no callbacks. - ---- - -#### CA-15: `commitRoot` Accepts Zero Merkle Root - -**Severity:** Low -**Type:** Input Validation -**Location:** `contracts/modules/SSVDAO.sol:168` -**Resolution:** Already closed (ref MAINNET-READINESS SEC-14 — coordinated oracles) - -**Source:** z_semantic_guard_scan.md (SGA-03) -**Cross-references:** z_input_arithmetic_safety_scan.md (Finding 7), z_scv-scan.md (SCV-07b) - -**Description:** - -No check that `merkleRoot != bytes32(0)`. A zero root committed by quorum would be permanently unusable since `_verifyEBRoots` treats zero as non-existent. `latestCommittedBlock` would advance past this block, blocking EB updates until a new root is committed. - ---- - -#### CA-16: `removeOperator` Doesn't Clear `operatorEthVUnits` - -**Severity:** Low -**Type:** State Cleanup -**Location:** `contracts/modules/SSVOperators.sol:344-355` -**Resolution:** Already fixed (ref MAINNET-READINESS QUALITY-10) - -**Source:** STATE-INVARIANT-REPORT.md (SIV-03) - -**Description:** - -`_resetOperatorState()` resets `ethValidatorCount`, `ethSnapshot`, `ethFee`, etc., but does not clear `operatorEthVUnits[operatorId]` from `SSVStorageEB`. No functional impact since `updateSnapshotSt()` is skipped for removed operators, but off-chain analytics would see stale values. - ---- - -#### CA-17: Dust Trapped on Reward Claim with Zero cSSV Balance - -**Severity:** Low -**Type:** Staking Rewards -**Location:** `contracts/modules/SSVStaking.sol:109-139` -**Resolution:** Already fixed (ref MAINNET-READINESS SEC-16b, BUG-20) - -**Source:** STATE-INVARIANT-REPORT.md (SIV-05) -**Cross-references:** z_staking_audit_report.md (Finding #4b) - -**Description:** - -When a user has zero cSSV and a sub-precision remainder (`< ETH_DEDUCTED_DIGITS = 100,000 wei`), the remainder is deleted from `accrued` but not returned to the pool. Maximum dust per user: 99,999 wei (~0.0000001 ETH). - ---- - -#### CA-18: Governance Fee Parameters Lack Min/Max Bounds - -**Severity:** Low -**Type:** Input Validation -**Location:** `contracts/modules/SSVDAO.sol:85-96, 263-266` -**Resolution:** Open (tracked as MAINNET-READINESS SEC-17) - -**Source:** z_scv-scan.md (SCV-03) -**Cross-references:** z_input_arithmetic_safety_scan.md (Finding 4) - -**Description:** - -Three governance parameters can be set to zero with no validation: `declareOperatorFeePeriod`, `executeOperatorFeePeriod`, `cooldownDuration`. A misconfiguration or governance attack could eliminate time-based protections. Additionally, no upper bounds exist — `cooldownDuration` could be set to `type(uint64).max`, permanently locking all unstaked tokens. - -**Recommendation:** Enforce both minimum and maximum value constants for each parameter. - ---- - -#### CA-19: uint64 Overflow in Unstake Unlock Time Calculation - -**Severity:** Low -**Type:** Arithmetic Safety -**Location:** `contracts/modules/SSVStaking.sol:87-88` -**Resolution:** Open - -**Source:** z_input_arithmetic_safety_scan.md (Finding 5) - -**Description:** - -The unlock time is computed as `uint64(block.timestamp + s.cooldownDuration)`. If `cooldownDuration` is set to a value close to `type(uint64).max`, the addition result (in `uint256`) silently truncates when cast to `uint64`, wrapping to a small value — allowing immediate withdrawal. - -**Note:** Requires an admin to set `cooldownDuration` to an extreme value (see CA-18). - -**Recommendation:** Use `SafeCast.toUint64()` or validate before casting. - ---- - -#### CA-20: Zero-Value Deposit and Withdrawal Accepted - -**Severity:** Low -**Type:** Input Validation -**Location:** `contracts/modules/SSVClusters.sol:186, 206` -**Resolution:** Already closed (ref MAINNET-READINESS SEC-16) - -**Source:** z_input_arithmetic_safety_scan.md (Finding 6) - -**Description:** - -Both `deposit()` and `withdraw()` accept zero-value operations. A zero deposit updates the cluster hash and emits events with `value = 0`. A zero withdrawal triggers balance checks, operator index reads, and a 0-wei ETH transfer. No fund-loss impact but pollutes event logs. - ---- - -#### CA-21: Oracle Quorum Weight Manipulation via cSSV Supply - -**Severity:** Low -**Type:** Oracle Security -**Location:** `contracts/modules/SSVDAO.sol:191-197` -**Resolution:** Mitigated by design - -**Source:** z_oracle_flashloan_scan.md (Finding 1) - -**Description:** - -If an attacker front-runs the first oracle vote and inflates cSSV supply (via flash loan + `stake()`), the quorum threshold increases. However, the equal-weight model (`weight = totalStaked / oracleCount`) means inflating supply increases both threshold AND each oracle's weight proportionally — the ratio stays the same. With 4 oracles and 75% quorum, 3 votes always suffice regardless of supply. - ---- - -#### CA-22: No Staleness Check on Committed Root Age - -**Severity:** Low -**Type:** Oracle Security -**Location:** `contracts/modules/SSVClusters.sol:348, 434-442` -**Resolution:** Open (informational) - -**Source:** z_oracle_flashloan_scan.md (Finding 3) - -**Description:** - -There is no check on how old the latest committed root is relative to the current block. If oracles stop committing roots, `latestCommittedBlock` could be hundreds of blocks old. Clusters would operate with outdated effective balance values. Oracle liveness is a governance assumption, not a contract-level guarantee. - -**Recommendation:** Consider adding a `MAX_ROOT_AGE` parameter: `if (block.number - ctx.blockNum > MAX_ROOT_AGE) revert RootTooOld()`. - ---- - -#### CA-23: Raw `transfer`/`transferFrom` Instead of SafeERC20 - -**Severity:** Low -**Type:** External Call Safety -**Location:** `contracts/libraries/CoreLib.sol:46`, `contracts/modules/SSVStaking.sol:53, 103` -**Resolution:** Open (no current risk) - -**Source:** z_external_call_scan.md (Finding 1) - -**Description:** - -`SSVStaking` imports `SafeERC20` and declares `using SafeERC20 for IERC20`, but only uses it for `rescueERC20`. The SSV token's own `transfer`/`transferFrom` calls use the raw ERC20 interface. Currently safe because SSV is a standard OZ ERC20, but inconsistent with the imported library. - ---- - -#### CA-24: External Whitelisting Contract Call Without Gas Cap - -**Severity:** Low -**Type:** External Call Safety -**Location:** `contracts/libraries/OperatorLib.sol:203-204` -**Resolution:** Open (same root cause as CA-12) - -**Source:** z_external_call_scan.md (Finding 2) - -**Description:** - -The `isWhitelisted()` call to operator-chosen external contracts forwards all remaining gas. A malicious contract could consume excessive gas (gas bomb) or return large data. See CA-12 for full analysis. - ---- - -#### CA-25: Operator Fee Execution Window Block Stuffing - -**Severity:** Low -**Type:** DoS / Griefing -**Location:** `contracts/modules/SSVOperators.sol:146, 158-162` -**Resolution:** Open (economically infeasible on L1) - -**Source:** z_dos_griefing_scan.md (Finding 4) - -**Description:** - -`executeOperatorFee` must be called within the time window `[approvalBeginTime, approvalEndTime]`. A well-funded attacker could theoretically stuff blocks to prevent execution. With `executeOperatorFeePeriod` set to 24+ hours, block stuffing costs ~$10M+ on Ethereum mainnet. The operator can re-declare the fee if the window is missed. - ---- - -#### CA-26: Competing Oracle Proposals Leave Ghost State - -**Severity:** Low -**Type:** State Cleanup -**Location:** `contracts/modules/SSVDAO.sol:168-218` -**Resolution:** Open - -**Source:** z_behavioral_state.md (F-4) - -**Description:** - -When two oracles propose competing roots for the same `blockNum`, if root A reaches quorum first, the `rootCommitments[key_B]` and `roundFrozenSupply[key_B]` entries for root B are never cleaned up — they persist in storage indefinitely. No fund loss or security impact, only storage bloat proportional to oracle disagreement frequency. - ---- - -#### CA-27: `ClusterBalanceUpdated` Emitted for SSV Clusters With Unchanged State - -**Severity:** Low -**Type:** Event Correctness -**Location:** `contracts/modules/SSVClusters.sol:411-416` -**Resolution:** Open - -**Source:** z_behavioral_state.md (F-5) - -**Description:** - -In `_updateClusterBalanceInternal`, for `VERSION_SSV` clusters only the EB snapshot is updated — no fee accounting occurs. The `ClusterBalanceUpdated` event fires unconditionally with the unmodified `cluster` struct. The SSV oracle subscribes to this event and receiving it for an SSV cluster with unchanged balance could confuse off-chain indexers. - ---- - -#### CA-28: `claimEthRewards` Dual Balance Check Redundancy - -**Severity:** Low -**Type:** Code Quality -**Location:** `contracts/modules/SSVStaking.sol:137-141` -**Resolution:** Open - -**Source:** z_staking_audit_report.md (Finding #4) - -**Description:** - -`claimEthRewards` checks payout against both `stakingEthPoolBalance` AND `ethDaoBalance`. After `_syncFees`, these values should be equal. If they diverge (transient cross-module interaction), legitimate claims could be blocked — though divergence is self-correcting on next `_syncFees` call. - ---- - -### INFO - ---- - -#### CA-29: Dead Code in `_executeLiquidation` Wrong Accounting Direction - -**Severity:** Info -**Type:** Code Quality -**Location:** `contracts/modules/SSVClusters.sol:552, 573-591` -**Resolution:** Open - -**Source:** z_semantic_guard_scan.md (SGA-04) - -**Description:** - -The deviation accounting block handles `vUnitsCluster < baselineVUnits` by ADDING deviation to `daoTotalEthVUnits` and `operatorEthVUnits` — wrong direction. This case is unreachable because `_verifyEBLimits` enforces `effectiveBalance >= 32 ETH/validator`, so `vUnitsCluster >= baselineVUnits` always holds. If the code were ever reached due to future EB limit changes, accounting would be incorrect. - -**Recommendation:** Remove the dead `else` branch. - ---- - -#### CA-30: `rescueERC20` No Module-Level Access Control - -**Severity:** Info -**Type:** Access Control -**Location:** `contracts/modules/SSVStaking.sol:156` -**Resolution:** Open (proxy-level `onlyOwner` sufficient) - -**Source:** z_semantic_guard_scan.md (SGA-05) - -**Description:** - -`rescueERC20` relies exclusively on the proxy-level `onlyOwner` modifier. The delegatecall architecture means calling the module directly operates on the module's own empty storage, not the proxy's — direct module calls cannot drain proxy assets. - ---- - -#### CA-31: CLAUDE.md Stale Docs on `reactivate` nonReentrant - -**Severity:** Info -**Type:** Documentation -**Location:** CLAUDE.md, Security Rules section -**Resolution:** Open - -**Source:** z_semantic_guard_scan.md (SGA-06) - -**Description:** - -CLAUDE.md states `reactivate` is "Intentionally NOT protected" but in the code at `SSVClusters.sol:132`, `reactivate` IS protected with `nonReentrant`. Documentation is stale and could mislead auditors. - ---- - -#### CA-32: No SafeCast Library Used Anywhere - -**Severity:** Info -**Type:** Arithmetic Safety -**Location:** Multiple (~50+ casts across codebase) -**Resolution:** Open - -**Source:** z_input_arithmetic_safety_scan.md (Finding 8) - -**Description:** - -The codebase performs ~50+ explicit downcasts without using OpenZeppelin's SafeCast. Most casts are safe due to value constraints (e.g., `uint32(block.number)` won't overflow for ~1,600 years), but the absence of SafeCast means future changes widening value ranges could silently introduce truncation bugs. The most concerning casts (`uint128 -> uint64` in OperatorLib and ProtocolLib) are covered by CA-01 and CA-04. - ---- - -#### CA-33: Rounding Direction Analysis - -**Severity:** Info -**Type:** Arithmetic Safety -**Resolution:** No vulnerability - -**Source:** z_input_arithmetic_safety_scan.md (Finding 10) - -**Description:** - -All rounding directions were verified. Cluster fee deductions round down (user-favorable). Staking rewards and DAO earnings round down (protocol-favorable). `ebToVUnits` rounds up (protocol-favorable). This asymmetry is standard and the rounding dust is immaterial. - ---- - -#### CA-34: `_syncFees` Defensive `current < previous` Path - -**Severity:** Info -**Type:** Code Quality -**Location:** `contracts/modules/SSVStaking.sol:191-194` -**Resolution:** Open - -**Source:** z_staking_audit_report.md (Finding #5) - -**Description:** - -If `current < previous` (which shouldn't happen under normal invariants), the pool balance is silently reduced without reverting. This path is unreachable under correct protocol operation, but if triggered by a bug in another module, staker rewards would be silently lost. - -**Recommendation:** Add a revert when `current < previous` to fail loudly. - ---- - -#### CA-35: `onCSSVTransfer` Virtual Modifier Override Risk - -**Severity:** Info -**Type:** Upgrade Safety -**Location:** `contracts/modules/SSVStaking.sol:173` -**Resolution:** Open - -**Source:** z_staking_audit_report.md (Finding #6) - -**Description:** - -The `virtual` keyword allows overriding in derived contracts. If a future upgrade overrides `onCSSVTransfer` without proper reward settlement, it could break the accumulator pattern. The unused `amount` parameter may confuse future developers. - ---- - -#### CA-36 through CA-43: Informational Non-Findings - -The following were verified as safe or not applicable: - -| ID | Description | Source | Verdict | -|----|-------------|--------|---------| -| CA-36 | Flash loan attack surface on core cluster operations | z_oracle_flashloan_scan.md (F4) | No vulnerability — no market-price oracles | -| CA-37 | Circular price dependencies | z_oracle_flashloan_scan.md (F5) | None exist | -| CA-38 | Oracle replacement mid-round voting | z_oracle_flashloan_scan.md (F6) | Correctly handled | -| CA-39 | ETH transfer pattern (push payments) | z_external_call_scan.md (F4) | Correctly implemented with CEI + nonReentrant | -| CA-40 | `delegatecall` usage | z_external_call_scan.md (F5) | Trusted targets only, owner-controlled | -| CA-41 | No approve race conditions | z_external_call_scan.md (F6) | Clean | -| CA-42 | Fee-on-transfer / rebasing token compatibility | z_external_call_scan.md (F7) | Not applicable — only known tokens | -| CA-43 | Oracle `hasVoted` storage never cleaned | z_dos_griefing_scan.md (F5) | By design, acceptable growth (~1,460 slots/year) | - ---- - -## Cross-Reference Index - -This table maps each consolidated finding back to its source report(s) for traceability. - -| CA ID | STATE-INVARIANT | behavioral_state | input_arithmetic | scv-scan | semantic_guard | staking_audit | oracle_flashloan | dos_griefing | external_call | -|-------|----------------|-----------------|-----------------|----------|---------------|--------------|-----------------|-------------|--------------| -| CA-01 | SIV-01 | F-3 | Finding 2 | — | — | Finding #2 | — | — | — | -| CA-02 | SIV-04 | F-1 | — | — | — | Finding #3 | — | — | — | -| CA-03 | SIV-02 | — | — | — | — | — | — | — | — | -| CA-04 | — | — | Finding 1 | SCV-05 | — | — | — | — | — | -| CA-05 | — | F-2 | — | — | — | — | — | — | — | -| CA-06 | — | — | Finding 3 | SCV-01 | — | — | — | — | — | -| CA-07 | — | — | — | SCV-02 | — | — | — | — | — | -| CA-08 | — | — | — | SCV-06 | SGA-01 | — | — | — | — | -| CA-09 | — | — | Finding 9 | SCV-04 | — | Finding #1 | — | — | — | -| CA-10 | — | — | — | — | — | — | Finding 2 | — | — | -| CA-11 | — | — | — | — | — | — | — | Finding 1 | — | -| CA-12 | — | — | — | — | — | — | — | Finding 2 | Finding 2 | -| CA-13 | — | — | — | — | — | — | — | Finding 3 | — | -| CA-14 | — | — | — | — | SGA-02 | — | — | — | Finding 3 | -| CA-15 | — | — | Finding 7 | — | SGA-03 | — | — | — | — | -| CA-16 | SIV-03 | — | — | — | — | — | — | — | — | -| CA-17 | SIV-05 | — | — | — | — | Finding #4b | — | — | — | -| CA-18 | — | — | Finding 4 | SCV-03 | — | — | — | — | — | -| CA-19 | — | — | Finding 5 | — | — | — | — | — | — | -| CA-20 | — | — | Finding 6 | — | — | — | — | — | — | -| CA-21 | — | — | — | — | — | — | Finding 1 | — | — | -| CA-22 | — | — | — | — | — | — | Finding 3 | — | — | -| CA-23 | — | — | — | — | — | — | — | — | Finding 1 | -| CA-24 | — | — | — | — | — | — | — | — | Finding 2 | -| CA-25 | — | — | — | — | — | — | — | Finding 4 | — | -| CA-26 | — | F-4 | — | — | — | — | — | — | — | -| CA-27 | — | F-5 | — | — | — | — | — | — | — | -| CA-28 | — | — | — | — | — | Finding #4 | — | — | — | - ---- - -## Statistics - -| Severity | Total | Open | Already Fixed/Closed | Mitigated by Design | -|----------|-------|------|---------------------|-------------------| -| Medium-High | 1 | 0 | 1 | 0 | -| Medium | 12 | 5 | 5 | 2 | -| Low | 15 | 8 | 4 | 1 | -| Info | 15 | 6 | 0 | 0 | -| **Total** | **43** | **19** | **10** | **3** | - -**Unique actionable findings (Open, Medium or above):** 5 diff --git a/ssv-review/planning/INVARIANTS_TEST_PLAN.md b/ssv-review/planning/INVARIANTS_TEST_PLAN.md deleted file mode 100644 index 4e1da4c7..00000000 --- a/ssv-review/planning/INVARIANTS_TEST_PLAN.md +++ /dev/null @@ -1,286 +0,0 @@ -# Echidna Invariant Coverage Report - -**Generated:** 2026-03-19 -**Sources:** SPEC.md, FLOWS.md, MAINNET-READINESS.md, echidna test files, unit/integration tests - ---- - -## 1. Echidna Invariants Already Implemented (115 total) - -### SSVAccountingEchidna.sol (7 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 1 | `echidna_eth_conservation` | ETH balance + outflows >= inflows | -| 2 | `echidna_ssv_conservation` | SSV token balance <= minted amount | -| 3 | `echidna_eth_solvency` | Contract ETH balance >= net inflows | -| 4 | `echidna_operator_vunits_matches_clusters` | Operator effective vUnits align with all their active clusters | -| 5 | `echidna_migration_one_way` | Migrated SSV clusters removed from clusters[], present in ethClusters[] | -| 6 | `echidna_ssv_accrual_no_overflow` | SSV operator earnings never decrease due to overflow | -| 7 | `echidna_vunits_deviation_consistent` | Total DAO vUnits match sum of cluster vUnits + migrated clusters | - -### SSVClustersEchidna.sol (18 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 8 | `echidna_cluster_hash_consistent` | Stored cluster hash matches in-memory cluster data | -| 9 | `echidna_inactive_clusters_zeroed` | Inactive clusters have zero balance, index, networkFeeIndex | -| 10 | `echidna_cluster_balance_accounting` | Sum of tracked cluster balances matches expected total | -| 11 | `echidna_eth_balance_accounting` | Contract ETH >= all cluster balances + operator earnings + DAO + staking pool | -| 12 | `echidna_withdraw_limit_enforced` | Cannot withdraw more than cluster balance | -| 13 | `echidna_withdraw_conserves_balance` | Withdrew amount matches balance reduction (contract + owner) | -| 14 | `echidna_owner_withdraw_only` | Only cluster owner can withdraw | -| 15 | `echidna_liquidation_cleans_state` | Liquidation pays correct amount and resets cluster to empty | -| 16 | `echidna_reactivate_requires_inactive` | Cannot reactivate already-active cluster | -| 17 | `echidna_dust_liquidation_reachable` | Clusters with balance < burn rate are liquidatable | -| 18 | `echidna_eb_snapshot_block_lte_current` | EB snapshot lastUpdateBlock <= current block | -| 19 | `echidna_eb_snapshot_root_monotonic` | EB snapshot root block number never decreases | -| 20 | `echidna_eb_update_requires_root` | EB update reverts without committed Merkle root | -| 21 | `echidna_eb_update_frequency` | Cannot update EB twice within minBlocksBetweenUpdates window | -| 22 | `echidna_eb_update_staleness` | Cannot update EB with stale root | -| 23 | `echidna_fee_index_current_after_settle` | Fee indices are current after cluster settlement | -| 24 | `echidna_fee_uses_old_vunits_on_eb_change` | Fees computed with OLD vUnits on EB change | -| 25 | `echidna_liquidation_clears_eb_snapshot` | Liquidation zeros the EB snapshot | - -### SSVOperatorsEchidna.sol (20 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 26 | `echidna_unique_active_pubkeys` | No duplicate public keys among active operators | -| 27 | `echidna_id_monotonic` | Operator IDs never decrease | -| 28 | `echidna_registered_owners_non_zero` | All active operators have non-zero owner | -| 29 | `echidna_eth_fee_within_max` | Operator ETH fee <= protocol maximum | -| 30 | `echidna_eth_fee_minimum` | Operators registered with ETH fee >= protocol minimum | -| 31 | `echidna_declare_fee_from_zero_reverts` | Cannot declare fee increase from zero fee | -| 32 | `echidna_declare_does_not_change_fee` | Declare does not immediately change current fee | -| 33 | `echidna_execute_requires_valid_window` | Execute fails outside approval window | -| 34 | `echidna_execute_rejects_invalid_fee` | Execute fails if fee > max operator fee | -| 35 | `echidna_reduce_fee_decreases` | Reduce actually decreases fee and clears pending declarations | -| 36 | `echidna_withdraw_limit_enforced` | Cannot withdraw more ETH than operator balance | -| 37 | `echidna_withdraw_all_clears_balance` | withdrawAll zeros the ETH balance | -| 38 | `echidna_withdraw_conserves_balance` | Withdraw amount matches balance reduction | -| 39 | `echidna_earnings_monotonic` | Operator earnings never decrease | -| 40 | `echidna_fee_change_latency` | Fee index updates with correct latency | -| 41 | `echidna_eth_withdraw_keeps_ssv` | ETH withdrawal doesn't affect SSV balance | -| 42 | `echidna_ssv_withdraw_keeps_eth` | SSV withdrawal doesn't affect ETH balance | -| 43 | `echidna_owner_only_actions` | Non-owners cannot remove/declare/execute/withdraw | -| 44 | `echidna_remove_cleans_state` | Removal zeros fee, balances, snapshot blocks, validator count | -| 45 | `echidna_remove_pays_out` | Removal pays out both ETH and SSV balances exactly | - -### SSVValidatorsEchidna.sol (8 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 46 | `echidna_validator_hash_consistent` | Validator storage hash matches tracked state | -| 47 | `echidna_cluster_hash_consistent` | Cluster hash consistent with tracked state | -| 48 | `echidna_cluster_validator_counts` | Cluster validator count matches active validators | -| 49 | `echidna_operator_validator_counts` | Operator ethValidatorCount matches tracked registrations | -| 50 | `echidna_cluster_balance_accounting` | Sum of tracked cluster balances matches expected total | -| 51 | `echidna_no_duplicate_validators` | Cannot register same validator twice | -| 52 | `echidna_owner_only_remove` | Only validator owner can remove | -| 53 | `echidna_owner_only_exit` | Only validator owner can exit | - -### SSVStakingEchidna.sol (15 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 54 | `echidna_sync_fees_handles_decrease` | syncFees handles pool balance decrease correctly | -| 55 | `echidna_sync_fees_never_fails` | syncFees succeeds and produces correct pool balance | -| 56 | `echidna_invalid_stake_reverts` | Stake with amount < minimum reverts | -| 57 | `echidna_invalid_unstake_reverts` | Unstake with amount > balance or excess pending reverts | -| 58 | `echidna_invalid_withdraw_reverts` | Withdraw with no unlocked requests reverts | -| 59 | `echidna_cssv_supply_matches_users` | cSSV supply = sum of user balances = expected supply | -| 60 | `echidna_cssv_supply_lte_ssv_backing` | cSSV supply <= SSV token balance in contract | -| 61 | `echidna_ssv_balance_matches_staked_plus_pending` | SSV balance = cSSV supply + pending unstake | -| 62 | `echidna_pool_matches_dao_balance` | Staking ETH pool balance = DAO ETH balance | -| 63 | `echidna_pending_requests_bounded` | Pending unstake requests <= MAX_PENDING_REQUESTS (2000) | -| 64 | `echidna_user_index_leq_acc` | User accEthPerShare index <= global accumulator | -| 65 | `echidna_accrued_within_pool` | Accrued rewards (rounded down) <= available pool | -| 66 | `echidna_cssv_transfer_settles_both` | cSSV transfer triggers reward settlement for both parties | -| 67 | `echidna_claim_payout_precision` | Claim payout divisible by ETH_DEDUCTED_DIGITS | -| 68 | `echidna_no_free_rewards_on_transfer` | Transfer doesn't mint/destroy rewards | - -### CSSVTokenEchidna.sol (9 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 69 | `echidna_supply_equals_minted_minus_burned` | totalSupply = minted - burned | -| 70 | `echidna_burned_lte_minted` | Burned amount never exceeds minted | -| 71 | `echidna_individual_balance_lte_supply` | Each user balance <= totalSupply | -| 72 | `echidna_staking_is_self` | ssvStaking address = this contract | -| 73 | `echidna_name_immutable` | Name = "cSSV" | -| 74 | `echidna_symbol_immutable` | Symbol = "cSSV" | -| 75 | `echidna_decimals_is_18` | Decimals = 18 | -| 76 | `echidna_zero_address_has_no_balance` | Zero address balance = 0 | -| 77 | `echidna_supply_non_negative` | Supply >= 0 | - -### SSVDAOEchidna.sol (23 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 78 | `echidna_network_fee_matches_expected` | ETH network fee index monotonically increases correctly | -| 79 | `echidna_network_fee_ssv_matches_expected` | SSV network fee index monotonically increases correctly | -| 80 | `echidna_liquidation_thresholds_valid` | Liquidation thresholds >= minimum (21,480 blocks) | -| 81 | `echidna_quorum_bps_valid` | Quorum <= 10,000 BPS | -| 82 | `echidna_dao_balance_matches_expected` | DAO token balance = stored balance * DEDUCTED_DIGITS | -| 83 | `echidna_withdraw_limits_enforced` | Cannot overdraw DAO SSV balance | -| 84 | `echidna_withdraw_conserves_balance` | DAO withdrawal conserves token balance | -| 85 | `echidna_commit_root_only_oracle` | Non-oracle addresses cannot commit roots | -| 86 | `echidna_commit_root_no_duplicate_votes` | Same oracle cannot vote twice for same (block, root) pair | -| 87 | `echidna_commit_root_not_future` | Cannot commit root for future block number | -| 88 | `echidna_commit_root_not_stale` | Cannot commit root for block <= latestCommittedBlock | -| 89 | `echidna_committed_block_monotonic` | latestCommittedBlock never decreases | -| 90 | `echidna_commit_root_dust_round_reaches_quorum` | Dusty supply rounds reach quorum at 3 votes | -| 91 | `echidna_commit_root_dust_round_not_before_threshold` | Cannot finalize dusty round before 3 votes | -| 92 | `echidna_commit_root_dust_round_uses_truncated_supply` | Dusty round freezes truncated supply | -| 93 | `echidna_commit_root_below_oracle_count_reverts` | Cannot commit with fewer oracles than oracle slots | -| 94 | `echidna_oracle_mapping_consistent` | Oracle bidirectional mapping is consistent | -| 95 | `echidna_finalized_weight_cleared` | Finalized root commitments are cleared | -| 96 | `echidna_commitment_weight_lte_supply` | Commitment weight never exceeds cSSV total supply | -| 97 | `echidna_finalization_implies_quorum` | Root finalized only if weight >= quorum threshold | -| 98 | `echidna_dao_earnings_monotonic` | DAO earnings never decrease | -| 99 | `echidna_dao_index_block_lte_current` | DAO index blocks <= current block | -| 100 | `echidna_dao_earnings_matches_formula` | DAO earnings = (blockDelta * fee * vUnits) / BPS_DENOMINATOR | - -### SSVMigrationEchidna.sol (3 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 101 | `echidna_migration_removed_refund_exact` | Migration refunds exact SSV balance to cluster owner | -| 102 | `echidna_migration_removed_operator_not_eth_initialized` | Removed operators don't get ETH snapshot initialized during migration | -| 103 | `echidna_removed_operator_state_and_frozen_index_preserved` | Removed operators retain frozen snapshot.index | - -### SSVEBProofEchidna.sol (3 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 104 | `echidna_eb_merkle_proof_verified` | EB updates with invalid Merkle proofs are rejected | -| 105 | `echidna_eb_bounds_enforced` | EB outside [32, 2048] ETH/validator rejected | -| 106 | `echidna_eb_snapshot_fields_exact` | EB snapshot fields set exactly | - -### CSSVTokenAccessControlEchidna.sol (3 invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 107 | `echidna_attacker_cannot_mint` | Non-authorized address cannot mint | -| 108 | `echidna_attacker_cannot_burn` | Non-authorized address cannot burn | -| 109 | `echidna_only_self_is_staking` | ssvStaking address is the contract itself | - -### SSVOperatorFeeGovEchidna.sol (1 invariant) -| # | Invariant | Description | -|---|-----------|-------------| -| 110 | `echidna_execute_rejects_legacy_declarations` | Cannot execute fee requests declared before UPGRADE_TIMESTAMP | - -### SSVEdgeCasesEchidna.sol (4+ invariants) -| # | Invariant | Description | -|---|-----------|-------------| -| 111 | `echidna_yoyo_liquidation_reachable` | Liquidate -> reactivate -> liquidate cycle succeeds | -| 112 | `echidna_reactivation_vunits_mismatch` | vUnits correctly handled in liquidation->reactivation flow | -| 113 | `echidna_validator_spam_no_failure` | Max validators per operator doesn't cause overflow | -| 114 | Additional edge cases | Fee index overflow, packing overflow, ETH accrual integrity | - -### SSVLegacyClustersEchidna.sol (1 invariant) -| # | Invariant | Description | -|---|-----------|-------------| -| 115 | `echidna_ssv_liquidation_resets_and_pays` | SSV liquidation pays exact cluster balance and resets state | - ---- - -## 2. Spec Invariants (SPEC.md Section 11 - Explicitly Labeled) - -| # | Invariant | Spec Reference | Echidna Coverage | -|---|-----------|----------------|-----------------| -| A1 | **ETH Conservation**: `contract.ETH >= Sum(ETH cluster balances) + Sum(operator ETH earnings) + DAO ETH + staking pool` | SPEC L991-1002 | COVERED: `echidna_eth_balance_accounting`, `echidna_eth_conservation`, `echidna_eth_solvency` | -| A2 | **SSV Conservation**: `contract.SSV >= Sum(SSV cluster balances) + Sum(operator SSV earnings) + DAO SSV + stakingHeldSSV` | SPEC L1004-1015 | COVERED: `echidna_ssv_conservation` | -| A3 | **Validator Count Consistency**: `ethDaoValidatorCount == Sum(cluster.validatorCount)` across all active ETH clusters | SPEC L1017-1023 | **GAP**: per-cluster/per-operator counts tested but NOT the global DAO-level sum | -| A4 | **vUnit Consistency**: `daoTotalEthVUnits == ethDaoValidatorCount * BPS + Sum(cluster_deviations)` | SPEC L1025-1031 | COVERED: `echidna_vunits_deviation_consistent` | -| A5 | **Cluster Hash Integrity**: every operation ends with `s.ethClusters[key] == cluster.hashClusterData()` | SPEC L1033-1040 | COVERED: `echidna_cluster_hash_consistent` | -| A6 | **cSSV Supply Accounting**: `cSSV.totalSupply() == Sum(staked SSV) - Sum(unstake-requested SSV)` | SPEC L1042-1049 | COVERED: `echidna_cssv_supply_matches_users`, `echidna_ssv_balance_matches_staked_plus_pending` | -| A7 | **Accumulator Monotonicity**: `accEthPerShare` never decreases | SPEC L1051-1057 | COVERED: `echidna_user_index_leq_acc` (implicitly) | -| A8 | **Oracle Block Monotonicity**: `latestCommittedBlock` never decreases | SPEC L1059-1065 | COVERED: `echidna_committed_block_monotonic` | -| A9 | **Cluster Version Exclusivity**: `(s.clusters[key] != 0) XOR (s.ethClusters[key] != 0)` | SPEC L1067-1073 | **GAP**: `echidna_migration_one_way` checks post-migration but NOT the global XOR across all keys | -| A10 | **Operator Dual Tracking**: `operator.validatorCount + operator.ethValidatorCount == total validators using operator` | SPEC L1075-1082 | **GAP**: per-version counts tested separately, cross-version sum never asserted | - ---- - -## 3. Gap Analysis: Spec'd but NOT Fuzz-Tested - -### HIGH Priority (Accounting & Core Safety) - -| ID | Invariant | Spec Source | Why It Matters | -|----|-----------|-------------|----------------| -| **A3** | `ethDaoValidatorCount == Sum(cluster.validatorCount)` global sum | SPEC L1017 | Wrong DAO validator count -> wrong network fee calculations for all clusters | -| **A9** | Cluster version exclusivity: `clusters[key] XOR ethClusters[key]` globally | SPEC L1067 | Violation means a cluster exists in both maps -> double-accounting, double-liquidation | -| **A10** | Operator dual tracking: `op.validatorCount + op.ethValidatorCount == total` | SPEC L1075 | Cross-version validator count mismatch -> earnings drift, wrong EB baselines | -| **B7** | Implicit EB default: when `clusterEB.vUnits == 0`, use `validatorCount * BPS_DENOMINATOR` | SPEC L322 | Wrong default vUnits -> wrong fee accrual for all clusters before first EB update | -| **B8** | SSV clusters never use EB for fee scaling | SPEC L325 | If SSV fees accidentally used EB, legacy cluster balances would drain at wrong rate | -| **B9** | Fee settlement uses old rate before storing new rate | SPEC L892 | Out-of-order settlement -> operators earn fees at new rate for blocks served at old rate | -| **C8** | Rewards STOP accruing at exact `requestUnstake` moment for burned portion | SPEC L447 | If rewards continue accruing on burned cSSV, reward pool drains faster than expected | -| **E3** | Net-zero validator shift on migration: SSV count down, ETH count up by same N | FLOWS L452 | Non-zero-sum shift -> DAO counts diverge from reality -> fee/liquidation miscalculations | - -### MEDIUM Priority (Lifecycle & Edge Cases) - -| ID | Invariant | Spec Source | Why It Matters | -|----|-----------|-------------|----------------| -| **B11** | Cluster balance never negative after arbitrary operation sequences | SPEC L933 | `max(0, balance - fees)` pattern could be bypassed in edge cases under fuzzing | -| **C9** | Dust forfeiture: `remainder > 0 && balanceOf == 0` -> dust forfeited; `balanceOf > 0` -> preserved | SPEC L412-422 | Wrong dust handling -> either locked ETH or reward inflation | -| **C10** | Zero-cSSV users cannot accrue future rewards | SPEC L420 | If accrual continues with zero balance, `pendingReward` computation is undefined | -| **C11** | `withdrawUnlocked` batch processes ALL matured requests, leaves immature intact | SPEC L115 | Partial processing -> stuck SSV tokens; wrong swap-and-pop -> data corruption | -| **D3** | Deposit into liquidated cluster succeeds | FLOWS L278 | If blocked, users cannot prepare for reactivation | -| **D4** | Withdraw from liquidated cluster (fee settlement skipped) succeeds | FLOWS L309 | If blocked or fees applied, users lose funds from dead clusters | -| **D6** | Reactivation with removed operators: removed operators silently skipped | FLOWS L387 | If revert, clusters with removed operators are permanently stuck | -| **G1** | Removed operator `owner` field preserved (non-zero) | FLOWS L640 | If zeroed, off-chain systems lose operator identity; re-registration detection breaks | -| **G2** | Removed operator earnings remain withdrawable post-removal | FLOWS L640 | If not, operators lose earned fees on removal | -| **G6** | `ensureETHDefaults` initialization: first ETH interaction sets `ethFee = DEFAULT_OPERATOR_ETH_FEE` | SPEC L269 | Wrong initialization -> operators charge wrong ETH fee to all clusters | - -### LOW Priority (Oracle & Token Bounds) - -| ID | Invariant | Spec Source | Why It Matters | -|----|-----------|-------------|----------------| -| **C12** | `cSSV.totalSupply() <= SSV.totalSupply()` | FLOWS L866 | Theoretical upper bound; violation implies unbacked cSSV | -| **F9** | Failed quorum proposals persist (no auto-cleanup) | SPEC L476 | Storage hygiene; not a security issue but verifies no unintended cleanup | -| **F10** | Re-voting same `blockNum` with different root succeeds | SPEC L74 | Oracle operational flexibility; positive-case coverage | -| **F11** | Frozen voting supply exact formula on first vote (truncated to multiple of oracle count) | SPEC L463 | Already partially covered by dust-round tests | - ---- - -## 4. Cross-Reference with Unit/Integration Tests - -Some gaps above ARE tested in the JS test suite but NOT under fuzzing: - -| Gap ID | JS Test Coverage | Fuzzing Value | -|--------|-----------------|---------------| -| A3 | `test/e2e/cross-cutting/validator-count-invariant.test.ts` | Fuzzing would catch edge cases in concurrent register/remove/liquidate/migrate sequences | -| B11 | `test/simulation/invariants.ts` (Monte Carlo) | Echidna explores more state-space than simulation | -| D3 | `test/unit/SSVClusters/deposit.test.ts` | Fuzzing would test deposit-into-liquidated with arbitrary cluster states | -| D4 | Implicitly in `test/unit/SSVClusters/withdraw.test.ts` | Fuzzing would test withdraw-from-liquidated with fee edge cases | -| G1 | `test/unit/SSVOperators/removeOperator.test.ts` | Fuzzing would test removal after complex operator lifecycle sequences | -| G2 | `test/unit/SSVOperators/withdrawOperatorEarnings.test.ts` | Fuzzing would test post-removal withdrawal under arbitrary fee/EB states | - ---- - -## 5. Recommended Implementation Order - -### Phase 1: Global Accounting Invariants (HIGH impact, moderate effort) -1. **A3** - Add `echidna_dao_validator_count_consistent` to SSVAccountingEchidna -2. **A9** - Add `echidna_cluster_version_exclusive` to SSVAccountingEchidna -3. **A10** - Add `echidna_operator_total_validators_consistent` to SSVAccountingEchidna -4. **E3** - Add `echidna_migration_net_zero_validators` to SSVMigrationEchidna - -### Phase 2: Fee Calculation Correctness (HIGH impact, higher effort) -5. **B7** - Add `echidna_implicit_eb_default_used` to SSVClustersEchidna -6. **B8** - Add `echidna_ssv_fees_ignore_eb` to SSVClustersEchidna or SSVLegacyClustersEchidna -7. **B9** - Add `echidna_fee_settle_before_change` to SSVOperatorsEchidna - -### Phase 3: Staking Reward Edge Cases (HIGH impact, moderate effort) -8. **C8** - Add `echidna_unstake_stops_accrual` to SSVStakingEchidna -9. **C9** - Add `echidna_dust_forfeiture_correct` to SSVStakingEchidna -10. **C10** - Add `echidna_zero_cssv_no_accrual` to SSVStakingEchidna - -### Phase 4: Cluster Lifecycle Edges (MEDIUM impact, lower effort) -11. **B11** - Add `echidna_cluster_balance_non_negative` to SSVClustersEchidna -12. **C11** - Add `echidna_withdraw_unlocked_batch_correct` to SSVStakingEchidna -13. **D3** - Add `echidna_deposit_liquidated_succeeds` to SSVClustersEchidna -14. **D4** - Add `echidna_withdraw_liquidated_skips_fees` to SSVClustersEchidna -15. **D6** - Add `echidna_reactivate_with_removed_operators` to SSVClustersEchidna - -### Phase 5: Operator Lifecycle (MEDIUM impact, lower effort) -16. **G1** - Add `echidna_removed_operator_owner_preserved` to SSVOperatorsEchidna -17. **G2** - Add `echidna_removed_operator_earnings_withdrawable` to SSVOperatorsEchidna -18. **G6** - Add `echidna_ensure_eth_defaults_correct` to SSVOperatorsEchidna - -### Phase 6: Token & Oracle Edges (LOW impact, low effort) -19. **C12** - Add `echidna_cssv_supply_lte_ssv_total_supply` to CSSVTokenEchidna -20. **F9** - Add `echidna_failed_quorum_persists` to SSVDAOEchidna -21. **F10** - Add `echidna_revote_different_root_succeeds` to SSVDAOEchidna -22. **F11** - Extend existing dust-round tests in SSVDAOEchidna diff --git a/ssv-review/planning/MAINNET-READINESS.md b/ssv-review/planning/MAINNET-READINESS.md deleted file mode 100644 index f3571fdc..00000000 --- a/ssv-review/planning/MAINNET-READINESS.md +++ /dev/null @@ -1,4373 +0,0 @@ -# SSV Network v2.0.0 — Mainnet Readiness Checklist - -**Generated:** 2026-02-17 -**Updated:** 2026-03-16 -**Sources:** Verified bug report, verified test coverage gap analysis, verified scripts & ops audit, DIP-X vs implementation review reports (ETH Payments, Effective Balance, SSV Staking) -**Branch:** `ssv-staking` (base for all feature branches) - ---- - -## Priority Summary - -| ID | Task | Type | Priority | Effort | -|----|------|------|----------|--------| -| BUG-1 | ~~`ensureETHDefaults` overwritten by stale memory copy~~ | Critical Bug Fix | P0 | ✅ Fixed | -| BUG-2 | ~~`_resetOperatorState` doesn't clear `operator.owner`~~ | ~~Critical Bug Fix~~ Won't Fix | ~~P0~~ | ✅ By design | -| BUG-3 | ~~`ensureETHDefaults` resurrects removed operators~~ | Critical Bug Fix | P0 | ✅ Mitigated | -| BUG-4 | ~~Double deviation cleanup on liquidated cluster validator removal~~ | Critical Bug Fix | P0 | ✅ Fixed ([PR #429](https://github.com/ssvlabs/ssv-network/pull/429)) | -| BUG-5 | ~~`_liquidateAfterEBUpdateIfNeeded` condition too strict for ETH-only operators~~ | Critical Bug Fix | P1 | ✅ Fixed | -| BUG-6 | ~~Rewards lost when `totalStaked == 0` in staking `_syncFees`~~ | Critical Bug Fix | P1 | ✅ Mitigated (deployment) | -| BUG-7 | ~~`DEFAULT_OPERATOR_ETH_FEE` value deviates from DIP-X spec~~ | ~~Critical Bug Fix~~ | ~~P1~~ | ✅ Closed (negligible) | -| BUG-8 | ~~Cooldown duration uses `block.timestamp` but DIP specifies blocks~~ | ~~Critical Bug Fix~~ | ~~P1~~ | ✅ Closed (not a bug, added NatSpec) | -| BUG-9 | ~~`uint64(delta)` silent truncation in operator earnings accumulation~~ | ~~Critical Bug Fix~~ | ~~P1~~ | ✅ Closed (not realistic) | -| BUG-10 | ~~Remove liquidation check in `withdraw` function~~ | Critical Bug Fix | P2 | ✅ Fixed | -| BUG-12 | ~~`removeValidator` / `bulkRemoveValidator` blocked for legacy SSV clusters~~ | Critical Bug Fix | P1 | ✅ Done (Product approved) | -| BUG-13 | ~~Silent default ETH fee assignment for legacy operators during migration~~ | Observability Fix | P2 | ✅ Fixed (PR #502) | -| BUG-14 | ~~Removed operator SSV fees skipped during `migrateClusterToETH` fee settlement (double-payment)~~ | Critical Bug Fix | P1 | ✅ Fixed | -| BUG-14b | ~~`reduceOperatorFee` / `declareOperatorFee` overwrite explicit zero ETH fees for legacy SSV operators~~ | Critical Bug Fix | P1 | ✅ Fixed (ensureETHDefaults marker pattern) | -| BUG-15 | ~~`withdrawAllVersionOperatorEarnings` initializes ETH snapshot for legacy SSV-only operators~~ | Critical Bug Fix | P1 | ✅ Fixed | -| BUG-16 | ~~SSVNetworkViews enforce cluster version checks and unify isActive logic~~ | Critical Bug Fix | P1 | ✅ Fixed | -| BUG-17 | ~~`commitRoot` quorum can become unreachable due to truncation in per-oracle weight math~~ | Critical Bug Fix | P0 | ✅ Fixed | -| BUG-18 | ~~Staking Rewards Accumulator Precision Loss~~ | High Bug Fix | P1 | ✅ Closed (accepted as part of the accumulator model) | -| BUG-19 | ~~Aggregate vs per-cluster rounding causes conservation law violation~~ | Medium Bug Fix | P1 | ✅ Closed (accepted as a known precision limitation) | -| BUG-20 | Dust permanently trapped on reward claim with zero cSSV balance | Low Bug Fix | P1 | ✅ Closed (Fixed on SEC-16b) | -| SEC-1 | ~~`updateQuorumBps(0)` allows zero-threshold oracle commits~~ | Security Hardening | P2 | ✅ Mitigated (owner-only) | -| SEC-2 | ~~`quorumBps` not initialized during upgrade — zero by default~~ | Security Hardening | P0 | ✅ Fixed — `initializeSSVStaking` now takes `quorumBps` param and validates `!= 0 && <= 10_000` | -| SEC-3 | ~~`replaceOracle` doesn't invalidate pending votes~~ | Security Hardening | ~~P1~~ P2 | ✅ Mitigated (owner-only + coordinated oracles) | -| SEC-4 | ~~`updateUnstakeCooldownDuration` allows zero cooldown~~ | Security Hardening | ~~P1~~ P2 | ✅ Mitigated (owner-only, no accounting risk) | -| SEC-5 | ~~`totalStaked` changes between oracle votes (front-running)~~ | Security Hardening | ~~P1~~ P2 | ✅ Mitigated (impractical) | -| SEC-6 | ~~Add `nonReentrant` to `migrateClusterToETH`~~ | Security Hardening | P2 | ✅ Closed (no callback risk) | -| SEC-7 | ~~Add `nonReentrant` to `onCSSVTransfer`~~ | Security Hardening | P2 | ✅ Closed (trusted cSSV contract) | -| SEC-8 | ~~`reactivate` not emitting warning for removed operators~~ | Security Hardening | P2 | ✅ Closed (visible off-chain) | -| SEC-9 | ~~`operatorMaxFee` function signature differs from DIP-X spec~~ | Security Hardening | P2 | ✅ Closed (by design, PR #390) | -| SEC-10 | ~~cSSV token lacks governance/voting extensions (ERC20Votes)~~ | Security Hardening | P2 | ✅ Closed (Snapshot-based governance, same as SSV) | -| SEC-11 | ~~`hasDeviation` reactivation optimization uses global counter for per-operator decision~~ | Security Hardening | ~~P1~~ P3 | ✅ Closed (BUG-4 fix resolves root cause) | -| SEC-12 | ~~`deposit()` accepts deposits to liquidated ETH clusters without fee settlement~~ | Security Hardening | P2 | ✅ Closed (by design — document in FLOWS.md) | -| SEC-13 | ~~`OperatorWithdrawn` event doesn't distinguish ETH vs SSV withdrawals~~ | Security Hardening | P2 | ✅ Fixed — `OperatorWithdrawnSSV` added to `ISSVOperators.sol`; SSV path emits it, ETH path unchanged | -| SEC-14 | ~~`commitRoot` accepts `bytes32(0)` as merkleRoot — permanently wastes block slot~~ | Security Hardening | P2 | ✅ Closed (coordinated oracles) | -| SEC-15 | ~~Min/max operator fee can be set to contradictory values~~ | Security Hardening | P2 | ✅ Closed (owner-only setters) | -| SEC-16 | ~~Missing zero-value/zero-address guards on deposit and withdraw~~ | Security Hardening | P2 | ✅ Closed | -| SEC-16b | ~~Dust ETH stranded in `accrued` after full cSSV transfer + claim~~ | Security Hardening | P1 | ✅ Fixed | -| SEC-17 | DAO governance functions lack input guardrails (min/max/non-zero) | Security Hardening | P1 | M | -| SEC-18 | ETH-only operators can call `withdrawOperatorEarningsSSV` (no-op but wastes gas) | Security Hardening | P3 | S | -| SEC-19 | ~~`minBlocksBetweenUpdates` never initialized — EB update rate limit silently disabled~~ | Security Hardening | P1 | ✅ Fixed | -| SEC-20 | ~~Oracle Quorum Can Be Set to Zero~~ | Security Hardening | P2 | ✅ Fixed | -| TEST-1 | ~~Validator register/remove with non-zero operator fees~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #443) | -| TEST-2 | ~~EB-weighted operator earnings accumulation~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #444) | -| TEST-3 | ~~Balance delta assertions in liquidation paths~~ | Unit Test Completeness | P0 | ✅ Closed (PR #445) | -| TEST-4 | ~~`updateClusterBalance` on liquidated clusters~~ | Unit Test Completeness | P0 | ✅ Closed (PR #447 + enhanced with 3 edge cases) | -| TEST-5 | ~~Oracle quorum edge cases~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #449) | -| TEST-6 | ~~EB decrease scenarios~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #451) | -| TEST-7 | ~~Reentrancy in staking functions~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #452) | -| TEST-8 | ~~Forbid creating clusters with removed operators~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #453) | -| TEST-9 | ~~Migration balance accounting verification~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-10 | ~~Operator fee change + EB burn rate interaction~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-11 | ~~Network fee update impact on active clusters~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-12 | ~~Multi-staker reward fairness~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-13 | ~~Liquidation + reactivation multi-cycle accounting~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-14 | ~~Reactivation with EB deviation solvency check~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-15 | ~~SSV cluster operations completeness~~ | Unit Test Completeness | P1 | ✅ Closed (legacy SSV fee settlement covered; direct SSV withdraw is spec-blocked) | -| TEST-16 | ~~View function coverage (SSVViews)~~ | Unit Test Completeness | P1 | ✅ Fixed | -| TEST-17 | ~~Staking rewards from EB-weighted cluster fees~~ | Unit Test Completeness | P1 | ✅ Closed (Covered in `test/integration/SSVNetwork/staking.test.ts`) | -| TEST-18 | `withdrawNetworkETHEarnings` (DAO ETH withdrawal) | Unit Test Completeness | P1 | S | -| TEST-19 | ~~Operator removal impact on active ETH clusters~~ | Unit Test Completeness | P1 | ✅ Closed (covered by unit tests) | -| TEST-19a | Operator removal impact on active ETH clusters (edge cases) | Unit Test Completeness | P1 | S | -| TEST-20 | ~~Cooldown duration changes affecting pending requests~~ | Unit Test Completeness | P1 | ✅ Closed (covered by unit tests) | -| TEST-21 | ~~EB boundary values (min/max per validator)~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-22 | ~~Dust/precision edge cases~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-23 | ~~Max operator count (13) with EB~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-24 | ~~Idempotency and double-operation checks~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-25 | ~~Upgrade path (reinitializer) tests~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-26 | ~~Zero-validator cluster operations~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-27 | ~~Operator at max validator limit~~ | Unit Test Completeness | P2 | ✅ Closed | -| TEST-28 | ~~Uncomment SSV reentrancy test assertions~~ | Unit Test Completeness | P0 | ✅ Closed (Addressed in PR #454) | -| TEST-29 | ~~Add contract ETH balance delta assertions to deposit tests~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-30 | ~~Resolve TODO comments with deferred assertions~~ | Unit Test Completeness~~ | P1 | ✅ Done | -| TEST-31 | ~~Expand onCSSVTransfer test coverage~~ | Unit Test Completeness | P1 | ✅ Done | -| TEST-32 | ~~Add access control tests for DAO governance functions~~ | Unit Test Completeness | P1 | ✅ Closed (covered by unit tests) | -| TEST-33 | Mainnet governance config validation & edge-case tests | Unit Test Completeness | P1 | M | -| TEST-34 | ~~Staking solvency invariant: cSSV supply must not exceed SSV held by staking contract~~ | Unit Test Completeness | P1 | ✅ Done | -| ITEST-1 | ~~`commitRoot` → `updateClusterBalance` E2E flow~~ | Integration / E2E Tests | P1 | ✅ Closed | -| ITEST-2 | ~~Migration with multiple EB updates E2E~~ | Integration / E2E Tests | P1 | ✅ Closed | -| DEPLOY-1 | ~~Fix `deploy-all.ts` broken signature and constructor args~~ | Deployment & Scripts | P0 | ✅ Fixed — `deploy-all.ts` replaced by `deploy-fresh.ts` + `upgrade.ts` with correct `initializeSSVStaking(uint64,uint32[4],uint16)` signature | -| DEPLOY-2 | Verify `liquidationThresholdPeriod` config vs spec mismatch | Deployment & Scripts | P1 | S | -| DEPLOY-3 | ~~Verify `ethNetworkFee` rounding in config~~ | Deployment & Scripts | P2 | ✅ Closed (negligible) | -| DEPLOY-4 | ~~Remove unused error declarations in `ISSVNetworkCore.sol`~~ | Deployment & Scripts | P2 | ✅ Fixed | -| DEPLOY-5 | ~~Document `operatorMinFee` governance parameter in DIP-X~~ | Deployment & Scripts | P2 | ✅ Fixed | -| DEPLOY-6 | ~~DIP-X unstaking description doesn't match implementation~~ | Deployment & Scripts | P2 | ✅ Closed (already correct in SPEC.md and FLOWS.md) | -| DEPLOY-7 | ~~Deploy scripts import from test files~~ | Deployment & Scripts | P2 | ✅ Fixed — `upgrade.ts` and `deploy-fresh.ts` import from `scripts/common/config.ts`, no test file imports | -| DEPLOY-8 | ~~Dedicated verification script~~ | Deployment & Scripts | P2 | ✅ Done — New verify-upgrade recipe | -| QUALITY-1 | ~~`operatorFeeChangeRequests` not cleared on operator removal~~ | Code Quality | P2 | ✅ Closed (dead storage, off-chain sees OperatorRemoved) | -| QUALITY-2 | ~~Redundant `SSVStorage.load()` calls in view function loops~~ | Code Quality | P2 | ✅ Fixed | -| QUALITY-3 | ~~`withdraw` in SSVClusters duplicates operator loop inline~~ | Code Quality | P2 | ✅ Fixed | -| QUALITY-4 | ~~`_resetOperatorState` returns unused `Operator memory`~~ | Code Quality | P3 | ✅ Closed (cosmetic) | -| QUALITY-5 | ~~Remove duplicate `MaxValueExceeded` error declaration~~ | Code Quality | P3 | ✅ Fixed | -| QUALITY-6 | Multiple fixture patterns across tests (E2E/unit/integration) | Code Quality | P1 | ⚠️ High Priority — standardize after PR #435 | -| QUALITY-7 | Harness contracts vs. real contracts in tests | Code Quality | P2 | ⚠️ Medium Priority — migrate E2E to real contracts (PR #435) | -| QUALITY-8 | Helper function duplication across test types | Code Quality | P3 | ℹ️ Low Priority — merge helpers after PR #435 | -| QUALITY-9 | ~~`removeOperator` should clear fee change requests~~ | Code Quality | P2 | ✅ Closed (cleanup added + unit test) | -| QUALITY-10 | ~~`removeOperator` does not clear `operatorEthVUnits` — orphaned deviation~~ | Code Quality | P1 | ✅ Fixed | -| QUALITY-11 | ~~`commitRoot` skips `WeightedRootProposed` on quorum-reaching vote~~ | Code Quality | P2 | ✅ Fixed | -| QUALITY-12 | ~~Unsafe `uint128 → uint64` casts in operator/DAO earnings accumulation~~ | Code Quality | P2 | ✅ Fixed | -| QUALITY-13 | ~~Refactor tests, fixtures, helpers and migrate e2e tests to full fixtures~~ | Code Quality | P2 | ✅ Done | -| OPS-1 | Create mainnet deployment runbook | Operational Readiness | P1 | M | -| OPS-2 | Create emergency rollback procedure | Operational Readiness | P1 | M | -| OPS-3 | Update `.env.example` for v2.0.0 | Operational Readiness | P2 | 🧹 Cleanup PR candidate | -| OPS-4 | ~~Multisig batch tx method untested in sequential stage/prod/mainnet pipeline~~ | Operational Readiness | P1 | ✅ Done | -| FUZZ-1 | ~~Strengthen 5 partially-covered echidna invariants~~ | Echidna Invariant Suite | P1 | ✅ Done | -| FUZZ-2 | ~~Add 16 high-priority new echidna invariants (oracle/EB/fees/liquidation/staking)~~ | Echidna Invariant Suite | P1 | ✅ Done | -| FUZZ-3 | ~~Add 8 medium-priority echidna invariants (Merkle proof, operator fee gov, legacy SSV)~~ | Echidna Invariant Suite | P2 | ✅ Done | -| FUZZ-4 | ~~Add 6 lower-priority echidna invariants (vUnit aggregation, migration, overflow)~~ | Echidna Invariant Suite | P2 | ✅ Closed | -| FUZZ-5 | ~~ETH contract balance accounting invariant: `address(this).balance == Σ cluster.balance + Σ operator.ethEarnings + ethDaoBalance + stakingEthPoolBalance`~~ | Echidna Invariant Suite | P1 | ✅ Done | -| MAINNET-READINESS-1 | Mainnet playbook ready and send to m-sig | Mainnet Readiness | P0 | M | -| MAINNET-READINESS-2 | Full mainnet -> staking upgrade flow | Mainnet Readiness | P0 | M | -| MAINNET-READINESS-3 | Deep testing on staking | Mainnet Readiness | P0 | M | -| MAINNET-READINESS-4 | Audit complete | Mainnet Readiness | P2 | M | -| MAINNET-READINESS-5 | Cssv token outside of the ssv protocol | Mainnet Readiness | P1 | M | -| MAINNET-READINESS-6 | PR merging (Marco) | Mainnet Readiness | P1 | M | - - - - - - ---- - -## Critical Bug Fix - -### [BUG-1] `ensureETHDefaults` overwritten by stale memory copy -- **Type:** Critical Bug Fix -- **Priority:** P0 -- **Status:** Fixed (verified on `ssv-staking`) -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Fix `updateClusterOperatorsOnRegistration` so that the memory copy of an operator is taken AFTER `ensureETHDefaults` writes to storage, not before. The stale memory copy currently overwrites the ETH defaults that were just set. - -**Context:** -In `OperatorLib.sol:185`, the operator is loaded into memory. At line 201, `ensureETHDefaults` correctly writes to storage. But at line 239, `s.operators[operatorId] = operator` overwrites storage with the stale memory copy where `ethFee == 0` and `ethSnapshot.block == 0`. For pre-v2 operators that never had ETH fields initialized, this means they silently get zero ETH fees and cluster liquidation thresholds use an incorrect burn rate. This is the highest-severity bug in the codebase. - -**Resolution:** -Code refactored on `ssv-staking` — the function now uses a storage reference (`operatorSt`), calls `ensureOperatorExist` and `ensureETHDefaults` on it, and only then copies to memory. See `OperatorLib.sol:197-201`. - -**Acceptance Criteria:** -- [x] Operator loaded into memory AFTER `ensureETHDefaults` is called, or `ensureETHDefaults` is called on the memory copy and then written back -- [x] Pre-v2 operators get correct `ethFee` (default ETH fee) after first validator registration -- [x] Pre-v2 operators get correct `ethSnapshot.block` (current block) after first registration -- [x] `cumulativeFee` accumulates correctly (not zero) for clusters with pre-v2 operators -- [ ] Existing unit tests still pass -- [ ] New unit test covers registering a validator with a pre-v2 operator and verifying `ethFee != 0` - -**Agent Instructions:** -1. Read `contracts/libraries/OperatorLib.sol` fully, focusing on `updateClusterOperatorsOnRegistration` (line 162). -2. The fix: Move the memory copy (`Operator memory operator = s.operators[operatorId]` at line 185) to AFTER the `ensureETHDefaults(s.operators[operatorId])` call at line 201. Alternatively, call `ensureETHDefaults` on the storage reference first, then load into memory. -3. Ensure the loop structure still works — `ensureETHDefaults` must be called on the storage reference, and then the memory copy should reflect the updated storage. -4. Do NOT change the `ensureETHDefaults` function itself. -5. Do NOT change `updateClusterOperators` or `updateClusterOperatorsOnReactivation` — they are separate code paths. -6. Add a unit test in `test/unit/SSVValidator/` that registers a validator using operators whose `ethFee` and `ethSnapshot.block` are both zero (simulating pre-v2 state), then verifies: - - `operator.ethFee` is set to the default ETH fee after registration - - `operator.ethSnapshot.block` is the current block - - The cluster's cumulative fee correctly includes the operator's ETH fee -7. Run `npm run test:unit` to verify all tests pass. - -#### Sub-items: -- [ ] Sub-task 1: Reorder memory load to after `ensureETHDefaults` in `updateClusterOperatorsOnRegistration` -- [ ] Sub-task 2: Write unit test for pre-v2 operator ETH fee initialization during validator registration -- [ ] Sub-task 3: Run full unit test suite and verify no regressions - ---- - -### [BUG-2] `_resetOperatorState` doesn't clear `operator.owner` -- **Type:** ~~Critical Bug Fix~~ Informational — Won't Fix -- **Priority:** ~~P0~~ N/A -- **Status:** Closed (by design) -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Original Requirement:** -When an operator is removed via `removeOperator`, the `_resetOperatorState` function must also clear `operator.owner` to ensure removed operators are consistently detectable across all code paths. - -**Resolution — Intentional Design:** -Preserving `operator.owner` after removal is intentional behavior, consistent since v1 (`main` branch). Reasons: - -1. **Off-chain queryability:** `getOperatorById` (SSVViews.sol:89) returns the preserved owner so explorers/UIs can display who owned a removed operator. Clearing it would lose this information on-chain. -2. **All on-chain guards are already safe:** - - `checkOwner` (OperatorLib.sol:131): catches removed operators via `snapshot.block == 0 && ethSnapshot.block == 0` — never reaches the owner check - - `ensureOperatorExist` (OperatorLib.sol:159): catches via `(ethSnapshot.block == 0 && snapshot.block == 0)` — second condition fires even though `owner != address(0)` - - `getSSVBurnRate` (SSVViews.sol:356): removed operators pass `owner != address(0)` but contribute zero fee (fee is already zeroed) — no impact -3. **No exploit path:** there is no code path where a non-zero owner on a removed operator leads to incorrect state mutation or access control bypass. - -Updated documentation in `docs/FLOWS.md` section 4.2 to reflect this design with a full detection-method table. - -#### Sub-items: -- [ ] Sub-task 1: Add `operator.owner = address(0)` to `_resetOperatorState` -- [ ] Sub-task 2: Audit all `operator.owner` references for compatibility -- [ ] Sub-task 3: Add unit test verifying owner is cleared after removal -- [ ] Sub-task 4: Run full test suite - ---- - -### [BUG-3] `ensureETHDefaults` resurrects removed operators -- **Type:** ~~Critical Bug Fix~~ Mitigated -- **Priority:** ~~P0~~ N/A -- **Status:** Closed (mitigated by upstream guards on `ssv-staking`) -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Original Requirement:** -`ensureETHDefaults` must not set `ethSnapshot.block` on removed operators. Add a guard to skip operators that have been removed. - -**Resolution — All call sites are already guarded:** -While `ensureETHDefaults` itself has no removed-operator guard, no code path can reach it with a removed operator: - -1. **`updateClusterOperatorsOnRegistration` (line 200):** `ensureOperatorExist` (line 198) reverts first for removed operators (both snapshot blocks are 0). -2. **`declareOperatorFee` (SSVOperators.sol:107):** `checkOwner` (line 100) reverts first for removed operators (both snapshot blocks are 0). -3. **`updateClusterOperatorsMigration` (line 395):** Explicit `continue` at line 380 skips removed operators (`snapshot.block == 0 && ethSnapshot.block == 0`). Only operators with at least one non-zero snapshot block reach `ensureETHDefaults`. - -**Acceptance Criteria:** -- [x] `ensureETHDefaults` does not modify removed operators (unreachable via all call sites) -- [x] Removed operators keep `ethSnapshot.block == 0` after any call path -- [x] New validators cannot be registered to clusters containing removed operators (enforced by `ensureOperatorExist`, PR #410) -- [x] Existing migration and registration tests still pass - ---- - -### [BUG-4] ~~Double deviation cleanup on liquidated cluster validator removal~~ -- **Type:** Critical Bug Fix -- **Priority:** P0 -- **Status:** ✅ Fixed -- **Owner:** N/A -- **Timeline:** Merged 2026-02-17 -- **Github Link:** [PR #429](https://github.com/ssvlabs/ssv-network/pull/429) (merged) - -**Requirement:** -Fix `_bulkRemoveValidator` so that when removing the last validators from a liquidated cluster with explicit EB tracking, deviation is not double-subtracted from `operatorEthVUnits` and `daoTotalEthVUnits`. - -**Context:** -In `SSVValidators.sol:164-247`, when a cluster is liquidated (`!cluster.active`), the `if (cluster.active)` guard at line 194 skips the operator update. However, the EB deviation cleanup block at lines 211-240 still runs. If the cluster had explicit EB tracking and was liquidated, the deviation was already cleaned up during `_executeLiquidation` (`SSVClusters.sol:554-614`). When `_bulkRemoveValidator` subtracts deviation again at lines 230 and 233, this double-subtracts from `operatorEthVUnits` and `daoTotalEthVUnits`, potentially causing underflow and reverting — which blocks validator removal entirely. - -**Acceptance Criteria:** -- [ ] Removing validators from a liquidated cluster with explicit EB tracking does NOT double-subtract deviation -- [ ] `operatorEthVUnits` and `daoTotalEthVUnits` are correct after removing validators from a liquidated cluster -- [ ] Removing validators from a liquidated cluster without explicit EB tracking still works -- [ ] Removing validators from an active cluster is unchanged -- [ ] New test: liquidate a cluster with explicit EB → remove validators → verify no revert and correct deviation values - -**Agent Instructions:** -1. Read `contracts/modules/SSVValidators.sol`, focus on `_bulkRemoveValidator` (line 164), particularly the EB deviation cleanup block at lines 211-240. -2. Read `contracts/modules/SSVClusters.sol`, focus on `_executeLiquidation` (line 554) to understand what deviation cleanup liquidation already performs. -3. The fix: Add a guard in the deviation cleanup block (around line 218-237) that skips the `operatorEthVUnits` and `daoTotalEthVUnits` subtraction when `!cluster.active`. The `ebSnapshot.vUnits` zeroing can remain (it's per-cluster and not double-counted). -4. Alternatively, wrap the deviation cleanup in `if (cluster.active || ...)` to only clean up deviation for active clusters. -5. Follow the existing pattern in the codebase where `cluster.active` guards are used. -6. Add a test in `test/unit/SSVValidator/` that: creates a cluster with EB tracking → liquidates it → removes validators → verifies `operatorEthVUnits` and `daoTotalEthVUnits` are correct (not underflowed). -7. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Add `cluster.active` guard around deviation cleanup in `_bulkRemoveValidator` -- [x] Sub-task 2: Write test for validator removal from liquidated cluster with explicit EB (`test/unit/SSVValidator/bug4-double-deviation-liquidated.test.ts`) -- [ ] Sub-task 3: Run full test suite - ---- - -### [BUG-5] `_liquidateAfterEBUpdateIfNeeded` condition too strict for ETH-only operators -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Fix the condition at `SSVClusters.sol:543` so that `ethValidatorCount` is decremented for ETH-only operators (those with `ethSnapshot.block != 0` but `snapshot.block == 0`). - -**Context:** -In `_liquidateAfterEBUpdateIfNeeded` at `SSVClusters.sol:521-552`, line 543 checks `op.ethSnapshot.block != 0 && op.snapshot.block != 0` before decrementing `ethValidatorCount`. Operators registered after the v2.0.0 migration may have `snapshot.block == 0` (never had SSV activity), so the decrement is skipped — leaving `ethValidatorCount` inflated. - -**Acceptance Criteria:** -- [ ] `ethValidatorCount` is decremented for operators with `ethSnapshot.block != 0` regardless of `snapshot.block` -- [ ] Operators with `ethSnapshot.block == 0` (removed) are still skipped -- [ ] No change to the `_executeLiquidation` call - -**Agent Instructions:** -1. Read `contracts/modules/SSVClusters.sol`, focus on `_liquidateAfterEBUpdateIfNeeded` (line 521). -2. Change the condition at line 543 from `op.ethSnapshot.block != 0 && op.snapshot.block != 0` to just `op.ethSnapshot.block != 0`. -3. Verify this doesn't break the removed-operator skip (removed operators have `ethSnapshot.block == 0` after `_resetOperatorState`). -4. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Fix condition in `_liquidateAfterEBUpdateIfNeeded` -- [ ] Sub-task 2: Add test for EB auto-liquidation with ETH-only operators -- [ ] Sub-task 3: Run full test suite - ---- - -### [BUG-6] Rewards lost when `totalStaked == 0` in staking `_syncFees` -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** ✅ Mitigated (deployment) -- **Owner:** (deployment team) -- **Timeline:** At upgrade -- **Github Link:** Mitigated via [PR #431](https://github.com/ssvlabs/ssv-network/pull/431) (upgrade batch includes initial DAO stake) -- **DIP-X Review Source:** SSV Staking review findings DIP-18, DIP-19 - -**Requirement:** -When `totalStaked == 0` in `_syncFees`, ETH rewards must not be silently lost. Either accumulate them for the next sync when stakers exist, or redirect them to the DAO. - -**Context:** -`SSVStaking.sol:179-203`: When `totalStaked == 0`, line 196 skips the `accEthPerShare` increment but line 201 still advances `stakingEthPoolBalance`. The fees earned during the zero-staked period are permanently locked in the contract — they can never be distributed to future stakers. - -**Additional context from DIP-X review (DIP-19):** The `_syncFees` function also has a related edge case when `current <= previous` (DAO earnings decrease). At `SSVStaking.sol:187-190`, if `current.lte(previous)`, the function silently updates `stakingEthPoolBalance` to the lower value and returns without distributing. This can happen after reward claims reduce `sp.ethDaoBalance`. While `claimEthRewards` reduces both `stakingEthPoolBalance` and `sp.ethDaoBalance` by the same packed amount (so `current == previous` after normal claims), this edge case acts as a safety valve. The fix for BUG-6 should also consider this interaction to ensure no fees are lost in either direction. - -**Mitigation:** -This is mitigated by deployment procedure rather than a code fix. The DAO multisig (Safe) upgrade batch transaction includes an SSV `approve` + `stake(1 SSV)` call immediately after `upgradeToAndCall`. This ensures `totalStaked > 0` before any network fees can accrue, making the zero-staked window impossible in practice. The 1 SSV stake goes to the DAO address, so the tokens are not lost. The full upgrade batch is: -1. `upgradeToAndCall` (proxy upgrade + `initializeSSVStaking` with quorumBps=7500) -2. `updateModule` × 7 (all module addresses) -3. SSV token `approve` (SSVNetwork contract as spender) -4. `stake(1_000_000_000)` (1 SSV minimum stake from DAO) -5. Governance parameter updates (`updateNetworkFee`, `updateLiquidationThresholdPeriod`, etc.) - -All executed atomically in a single Safe multisig batch transaction. - -**Acceptance Criteria:** -- [x] Deployment runbook includes DAO stake as part of upgrade batch -- [x] `initializeSSVStaking` now validates `quorumBps` (PR #431) -- [ ] Verify Safe batch transaction encoding before mainnet execution -- [ ] Post-upgrade: confirm `totalStaked > 0` on-chain - -#### Sub-items: -- [x] Sub-task 1: Document deployment mitigation in MAINNET-READINESS.md -- [x] Sub-task 2: Add quorumBps to initializer (PR #431) -- [ ] Sub-task 3: Encode and test Safe batch transaction before mainnet - ---- - -### [BUG-7] ~~`DEFAULT_OPERATOR_ETH_FEE` value deviates from DIP-X spec~~ -- **Type:** ~~Critical Bug Fix~~ -- **Priority:** ~~P1~~ Closed -- **Status:** ✅ Closed (negligible) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Resolution:** Difference is ~0.31% (~0.0000143 ETH/year per validator). Negligible. Mainnet config uses the DIP-X intended value adjusted for packability. -- **DIP-X Review Source:** ETH Payments review findings ETH-7, ETH-14 - -**Requirement:** -The `DEFAULT_OPERATOR_ETH_FEE` constant is set to `1,770,000,000` wei (1.77 gwei) but the DIP-X specifies `0.000000001775464912 ETH` (1,775,464,912 wei = 1.775464912 gwei). The DIP value is not packable (not divisible by `ETH_DEDUCTED_DIGITS = 100,000`), so a rounded value must be used. The implementation chose `1,770,000,000` which is further from the spec than necessary. The closest packable value rounding up is `1,775,500,000`. - -**Context:** -`SSVCoreTypes.sol:14`: `DEFAULT_OPERATOR_ETH_FEE = 1770_000_000`. The DIP value `1,775,464,912 % 100,000 = 64,912` (not divisible), so it would revert with `MaxPrecisionExceeded`. The closest valid values are `1,775,400,000` (rounding down) or `1,775,500,000` (rounding up). The current value under-delivers by ~0.31% on the stated fee. Per-block difference: 5,464,912 wei. Annual impact per validator: ~0.0000143 ETH less than DIP target. - -**Acceptance Criteria:** -- [ ] `DEFAULT_OPERATOR_ETH_FEE` updated to `1_775_500_000` (closest packable value rounding up) or team explicitly documents acceptance of the current rounded value -- [ ] Value is verified to be divisible by `ETH_DEDUCTED_DIGITS` (100,000) -- [ ] DIP-X document updated to note the rounding constraint if current value is kept -- [ ] Existing unit tests still pass with updated constant - -**Agent Instructions:** -1. Read `contracts/libraries/SSVCoreTypes.sol`, find the `DEFAULT_OPERATOR_ETH_FEE` constant. -2. Verify `1_775_500_000 % 100_000 == 0` (it is). -3. Change `DEFAULT_OPERATOR_ETH_FEE = 1770_000_000` to `DEFAULT_OPERATOR_ETH_FEE = 1_775_500_000`. -4. Run `npx hardhat compile` to verify compilation. -5. Run `npm run test:unit` to verify no regressions. -6. If tests fail due to hardcoded expectations, update test constants to match. - -#### Sub-items: -- [ ] Sub-task 1: Update `DEFAULT_OPERATOR_ETH_FEE` constant or document acceptance of current value -- [ ] Sub-task 2: Verify packability and run tests -- [ ] Sub-task 3: Update DIP-X if needed - ---- - -### [BUG-8] ~~Cooldown duration uses `block.timestamp` but DIP specifies blocks~~ -- **Type:** ~~Critical Bug Fix~~ -- **Priority:** ~~P1~~ Closed -- **Status:** ✅ Closed (not a bug) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A -- **DIP-X Review Source:** SSV Staking review finding DIP-8 - -**Resolution:** Implementation correctly uses `block.timestamp` (seconds). The deployment config (`deployments/hoodi-prod/config.json`) already has `cooldownDuration: 604800` (7 days in seconds). The DIP spec wording saying "blocks" was imprecise — team confirmed (Yurii) it's seconds. The spreadsheet value `50120` was a blocks-equivalent reference, not the actual config value. - -**Requirement:** -The DIP-X governance table explicitly states `cooldownDuration` is "in blocks" with initial value "50120 (7 days)" and setter `updateUnstakeCooldownDuration(uint64 blocks)`. However, the implementation uses `block.timestamp` (seconds-based), not `block.number`. This creates a critical configuration risk: if `cooldownDuration` is initialized to 50120 thinking it's blocks, the actual cooldown would be ~13.9 hours instead of 7 days. - -**Context:** -`SSVStaking.sol:88`: `uint64 unlockTime = uint64(block.timestamp + s.cooldownDuration)`. The `UnstakeRequest` struct field is named `unlockTime` (timestamp-like), and `SSVStaking.sol:232` checks `requests[i].unlockTime <= block.timestamp`. Using `block.timestamp` is actually more reliable for user-facing cooldowns (block times can vary), so the implementation choice is reasonable — but the DIP/spec and the initial value must align. If using seconds, the correct 7-day value is 604,800, not 50,120. - -**Acceptance Criteria:** -- [ ] Either: DIP-X updated to say "in seconds" and initial value changed to `604800` (7 days in seconds) -- [ ] Or: implementation changed to use `block.number` instead of `block.timestamp` to match DIP -- [ ] The upgrade initializer sets the correct value for whichever unit is chosen -- [ ] `updateUnstakeCooldownDuration` parameter is documented with correct units -- [ ] Existing tests verified to use the correct unit - -**Agent Instructions:** -1. Read `contracts/modules/SSVStaking.sol`, focus on `requestUnstake` (line 66) and `calculateTotalUnfrozenBalance` (line 226). -2. Read `contracts/modules/SSVDAO.sol`, focus on `updateUnstakeCooldownDuration` (line 245). -3. Read `contracts/upgrades/stage/hoodi/SSVNetworkSSVStakingUpgrade.sol` for the initial value set during upgrade. -4. Recommended fix (simpler): Keep `block.timestamp` usage (it's better UX), but: - a. Update the DIP-X governance table to say "in seconds" instead of "in blocks" - b. Ensure the upgrade initializer sets `cooldownDuration = 604800` (7 days in seconds) - c. Update `updateUnstakeCooldownDuration` parameter name from `blocks` to `duration` in the interface -5. Check deployment configs (`deployments/hoodi-prod/config.json`, `deployments/hoodi-stage/config.json`) for the cooldown value and verify it matches the chosen unit. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Decide on units (seconds vs blocks) and align implementation + DIP -- [ ] Sub-task 2: Verify upgrade initializer sets correct value for chosen unit -- [ ] Sub-task 3: Update interface parameter name if needed -- [ ] Sub-task 4: Run full test suite - ---- - -### [BUG-9] ~~`uint64(delta)` silent truncation in operator earnings accumulation~~ -- **Type:** ~~Critical Bug Fix~~ -- **Priority:** ~~P1~~ Closed -- **Status:** ✅ Closed (not realistic) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Resolution:** Overflow is not realistic under DAO-enforced fee caps. Worst case with `maxOperatorEthFee = 5,326,300,000` wei/block (DAO cap), 500 validators at max EB (2048 ETH), and 1 year without any snapshot update: `delta ≈ 4.48e15`, which is **4,100x below** `uint64.max` (1.845e19). Even at 10 years with zero snapshot updates (impossible in practice — every cluster operation triggers a snapshot), delta would still be 400x below the threshold. The original audit example used an unrestricted fee value not bounded by the DAO's `maxOperatorEthFee`. - -**Original context (for reference):** -In `OperatorLib.sol:68-69` (also lines 93-94, 326-327), `PackedETH.wrap(uint64(delta))` silently truncates when delta exceeds `uint64.max` (1.845e19). With 500 validators at max EB (2048 ETH), 2.7 years between snapshots: `delta = 4.078e21`, which is 221x larger than `uint64.max`. The operator loses ~99.5% of accumulated earnings. - -**Concrete example:** Operator with `effectiveVUnits=320,000,000`, `ethFee=17,700` packed, `7,200,000` block gap → `delta = 320_000_000 * 17_700 * 7_200_000 = 4.078e16 * 100_000 = 4.078e21`, which overflows `uint64.max` and silently truncates. - -**Acceptance Criteria:** -- [ ] `delta` exceeding `uint64.max` either reverts with a clear error or is safely handled -- [ ] Use `SafeCast.toUint64(delta)` or add `require(delta <= type(uint64).max)` at all three locations -- [ ] Existing tests pass -- [ ] New test: operator with high vUnits and long gap → verify no silent truncation - -**Agent Instructions:** -1. Read `contracts/libraries/OperatorLib.sol`, focus on lines 68-69, 93-94, and 326-327. -2. Import OpenZeppelin's `SafeCast` or add manual bounds checks. -3. Replace `uint64(delta)` with `SafeCast.toUint64(delta)` at all three locations. -4. Add a unit test with high vUnits and long block gap to verify the fix catches overflow. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Replace `uint64(delta)` with SafeCast at all three locations in OperatorLib.sol -- [ ] Sub-task 2: Add unit test for operator earnings overflow scenario -- [ ] Sub-task 3: Run full test suite - ---- - -### [BUG-17] `commitRoot` quorum can become unreachable due to truncation in per-oracle weight math -- **Type:** Critical Bug Fix -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** Before mainnet launch -- **Github Link:** (empty) - -**Requirement:** -Fix `commitRoot` so that the configured oracle quorum remains reachable even when the frozen cSSV supply for a voting round is not divisible by the oracle count. - -**Context:** -`commitRoot` freezes `cSSV.totalSupply()` on the first vote of a `(blockNum, merkleRoot)` round to prevent inter-vote supply drift. That mitigation is correct and must remain in place. However, the function then computes: -- `weight = totalStaked / defaultOracleIds.length` -- `threshold = (totalStaked * quorumBps) / 10_000` - -This mixes two separately-truncated quantities. With 4 oracle slots and 75% quorum, if the frozen supply is `4q + 2` or `4q + 3`, three votes accumulate only `3q` weight while the threshold becomes `3q + 1`, so 3-of-4 consensus is mathematically unreachable. At 100% quorum, even 4 votes fail whenever the frozen supply is not divisible by 4. - -This is distinct from the already-mitigated front-running issue tracked in SEC-5. Freezing supply removes the moving-target quorum problem between votes; it does not remove truncation mismatch inside the fixed round arithmetic. - -**Vulnerability Details:** -- The bug is present in `contracts/modules/SSVDAO.sol` where vote weight and threshold are derived from the same frozen supply but rounded in different ways. -- The current specs mirror the same arithmetic, so documentation does not currently protect against the edge case. -- A minimal regression test now demonstrates the issue in `test/unit/SSVDAO/commitRoot.test.ts`: with `totalSupply = 1_000_000_002` and `quorumBps = 7500`, the third oracle vote should commit under intended 3-of-4 semantics, but does not. - -**Proposed Fix:** -Do not add new storage. Keep `roundFrozenSupply` and `rootCommitments` unchanged, and compute the quorum threshold in oracle-vote space instead of raw token space: - -```solidity -uint256 oracleCount = s.defaultOracleIds.length; -uint256 weight = totalStaked / oracleCount; - -seb.rootCommitments[commitmentKey] += weight; -uint256 accumulatedWeight = seb.rootCommitments[commitmentKey]; - -uint256 votesNeeded = (oracleCount * s.quorumBps + BPS_DENOMINATOR - 1) / BPS_DENOMINATOR; -uint256 threshold = votesNeeded * weight; -``` - -This preserves: -- frozen per-round supply -- current storage layout -- current `WeightedRootProposed` event shape -- current behavior where quorum updates between votes affect the next vote - -It also restores the intended semantics: -- 75% quorum with 4 oracles requires 3 votes -- 100% quorum with 4 oracles requires 4 votes - -**Acceptance Criteria:** -- [ ] With 4 oracles and `quorumBps = 7500`, the third vote commits even when frozen supply is not divisible by 4 -- [ ] With 4 oracles and `quorumBps = 10000`, the fourth vote commits even when frozen supply is not divisible by 4 -- [ ] `roundFrozenSupply` logic remains unchanged and still fixes inter-vote supply drift -- [ ] No storage layout changes are introduced -- [ ] Existing quorum behavior for low thresholds (for example `quorumBps = 1`) remains intact -- [ ] Unit test coverage includes at least one truncation regression case - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focusing on `commitRoot`. -2. Keep the existing frozen-supply logic (`roundFrozenSupply`) exactly as-is. -3. Do not add a new storage mapping such as `rootVotes`. -4. Change quorum threshold computation to use `ceil(oracleCount * quorumBps / 10_000)` votes, then compare in the same truncated weight domain already used by `rootCommitments`. -5. Update or extend unit tests in `test/unit/SSVDAO/commitRoot.test.ts` to cover: - - 75% quorum with non-divisible frozen supply - - 100% quorum with non-divisible frozen supply -6. Update `docs/SPEC.md` and `docs/FLOWS.md` to describe vote-based quorum thresholding over equal oracle slots while still noting that supply is frozen per round. - -#### Sub-items: -- [x] Add failing regression test demonstrating unreachable 3-of-4 quorum with non-divisible supply -- [ ] Patch `commitRoot` threshold math without storage-layout changes -- [ ] Add regression test for 100% quorum with non-divisible supply -- [ ] Update SPEC/FLOWS to reflect corrected quorum calculation -- [ ] Run targeted DAO/oracle tests and verify no regressions - ---- - -### [BUG-18] Staking Rewards Accumulator Precision Loss - -**File:** `contracts/modules/SSVStaking.sol` L202 -**Severity:** Low - -**Description:** The `accEthPerShare` accumulator increment can round to zero when `newFeesWei * PRECISION < totalStaked`. Those fees are absorbed into `stakingEthPoolBalance` but never distributed to stakers. With the minimum packed fee increment of 100,000 wei (`ETH_DEDUCTED_DIGITS`) and PRECISION of 1e18, any `totalStaked > 1e23` (100,000 SSV tokens at 18 decimals) causes the smallest fee increment to round to zero. - -**Code:** -```solidity -s.accEthPerShare += uint128((newFeesWei * PRECISION) / totalStaked); -// When newFeesWei * 1e18 < totalStaked, this adds 0 -``` - -**Recommendation:** This is inherent to the accumulator pattern. The dust loss per sync is bounded by `totalStaked / PRECISION` wei (~0.0001 ETH for 100k SSV staked). For production parameters this is negligible, but consider documenting this as a known limitation. Alternatively, accumulate un-distributed remainders: -```solidity -uint256 scaledFees = newFeesWei * PRECISION; -uint256 distributed = (scaledFees / totalStaked) * totalStaked; -s.accEthPerShare += uint128(scaledFees / totalStaked); -s.undistributedDust += scaledFees - distributed; // carry forward -``` -**Resolution:** -BUG-18 is a standard accumulator dust issue. SSV supply is mintable, so we should not frame this as mathematically impossible forever. But under the current fee path, full zero-rounding only becomes reachable in the absolute smallest live case above 3.55B SSV staked, which is more than 200x current supply scale, and realistic operating conditions push the threshold far higher. Even with substantial token growth, the worst-case annual dust remains negligible and in the safe direction as tiny contract surplus. - ---- - -### [BUG-19] Aggregate vs per-cluster rounding causes conservation law violation - -**Severity:** MEDIUM -**Functions:** `OperatorLib.updateSnapshotSt()` at [`OperatorLib.sol:52-72`](contracts/libraries/OperatorLib.sol#L52-L72), `ProtocolLib.networkTotalEarnings()` at [`ProtocolLib.sol:84-90`](contracts/libraries/ProtocolLib.sol#L84-L90), `ClusterLib.updateBalanceWithEB()` at [`ClusterLib.sol:306-321`](contracts/libraries/ClusterLib.sol#L306-L321) -**Invariant:** `Σ(operator_earnings) + DAO_earnings == Σ(cluster_fees_paid)` (ETH Conservation) - -**Mechanism:** - -Each cluster pays fees proportional to its own `vUnits`: -```solidity -// Per-cluster payment (ClusterLib.updateBalanceWithEB) -networkFeeUnits = (idxNet * units_cluster) / BPS_DENOMINATOR; // floor division -operatorFeeUnits = (idxOp * units_cluster) / BPS_DENOMINATOR; // floor division -``` - -But operators earn proportional to their **aggregate** `effectiveVUnits` across ALL clusters: -```solidity -// Per-operator earnings (OperatorLib.updateSnapshotSt) -delta = (blockDiffEthFee * effectiveVUnits_total) / BPS_DENOMINATOR; // floor division -``` - -And the DAO earns proportional to aggregate `daoTotalEthVUnits`: -```solidity -// DAO earnings (ProtocolLib.networkTotalEarnings) -earningsUnits = (idx * ethNetworkFee * daoTotalEthVUnits) / BPS_DENOMINATOR; -``` - -Due to the mathematical property `floor(a×x/n) + floor(a×y/n) ≤ floor(a×(x+y)/n)`: - -``` -Σ(cluster_i_payment) ≤ operator_aggregate_earnings -Σ(cluster_i_network_fee) ≤ DAO_aggregate_earnings -``` - -**Impact:** - -Operators and the DAO **virtually earn slightly more** than clusters collectively pay. This creates a slow insolvency drift where the sum of all claimable balances (operator earnings + DAO rewards) exceeds the ETH actually deposited by cluster owners. - -**Bounded magnitude:** -- Per settlement: at most `(numClusters - 1) × ETH_DEDUCTED_DIGITS` wei = `(N-1) × 100,000 wei` -- Per year (2.5M blocks): with 1,000 clusters = ~0.00025 ETH/year - -**Recommendation:** -This is a known DeFi pattern and the drift is negligible in practice. For completeness, consider documenting this as an accepted known issue. No code change required unless operating at extreme scale (>100K clusters sustained for years). - -**Resolution:** -BUG-19 is a real but negligible rounding issue. It is completely inactive while clusters remain at default `32 ETH` effective balance, and only activates once post-Pectra effective-balance diversity appears. In a contract-faithful mainnet-scale simulation (`150,000` validators, `1,100` clusters, `1,900` operators), the yearly net drift stays on the order of tens of nano-ETH, and even under doubled growth scenarios remains operationally irrelevant. The practical recommendation is to treat BUG-19 as a known precision limitation, not a meaningful mainnet risk or a blocker to launch. - ---- - -### [BUG-20]: ~~Dust permanently trapped on reward claim with zero cSSV balance~~ - -**Severity:** LOW -**Function:** `SSVStaking.claimEthRewards()` at [`SSVStaking.sol:109-139`](contracts/modules/SSVStaking.sol#L109-L139) -**Invariant:** `Σ(user.accrued) + Σ(claimed) = total distributed via accEthPerShare` - -**Mechanism:** - -```solidity -uint256 payout = claimable - (claimable % ETH_DEDUCTED_DIGITS); -// ... -uint256 remainder = claimable - payout; -s.accrued[msg.sender] = (remainder != 0 && userBalance == 0) ? 0 : remainder; -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// Dust zeroed without returning to pool -``` - -When a user has zero cSSV and a sub-precision remainder (`< ETH_DEDUCTED_DIGITS = 100,000 wei`), the remainder is deleted from `accrued` but NOT returned to `stakingEthPoolBalance` or `ethDaoBalance`. The dust remains in both virtual accounting variables and in the contract's actual ETH balance, permanently locked. - -**Impact:** -- Maximum dust per user: 99,999 wei (~0.0000001 ETH) -- Cumulative impact over thousands of users: could reach a few cents to a few dollars total -- The contract slowly accumulates a tiny amount of unclaimable ETH - -**Recommendation:** -Accept as known behavior (trivial magnitude) or return dust to the pool: -```solidity -if (remainder != 0 && userBalance == 0) { - s.accrued[msg.sender] = 0; - // Optionally: redistribute dust back to pool for other stakers -} -``` - -**Resolution:** ✅ Closed — The SEC-16b fix covers this exact code path. Maximum dust per user (99,999 wei) is accepted as negligible. Cross-referenced in CONSOLIDATED-AUDIT-FINDINGS CA-17. - ---- - -## Security Hardening - -### [SEC-1] `updateQuorumBps(0)` allows zero-threshold oracle commits -- **Type:** Security Hardening -- **Priority:** P2 (downgraded from P0) -- **Status:** ✅ Mitigated (owner-only) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Requirement:** -Add a minimum quorum validation to `updateQuorumBps`. A quorum of 0 allows a single oracle vote to commit any root. - -**Context:** -`SSVDAO.sol:234-239`: The function only checks `quorum > BPS_DENOMINATOR` (max bound). Setting `quorumBps = 0` makes the threshold in `commitRoot` (line 186) equal to 0, meaning any single oracle can unilaterally commit roots. Combined with SEC-2 (quorum defaults to 0 after upgrade), this is an immediate post-upgrade vulnerability. - -**Mitigation:** Downgraded to P2. `updateQuorumBps` is owner-only (DAO multisig). A compromised or negligent owner can already upgrade the entire contract, so zero-quorum via the setter is not an independent attack vector. The critical path (SEC-2: quorum defaulting to 0 after upgrade) is already fixed in PR #431 by validating quorumBps in the initializer. - -**Acceptance Criteria:** -- [ ] `updateQuorumBps(0)` reverts with `InvalidQuorum()` -- [ ] A reasonable minimum is enforced (e.g., `quorum >= 2500` for 25%, or at minimum `quorum > 0`) -- [ ] Existing tests for `updateQuorumBps` updated to reflect new validation -- [ ] New test: call `updateQuorumBps(0)` → expect revert - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `updateQuorumBps` (line 234). -2. Add `if (quorum == 0) revert InvalidQuorum();` before the existing check. Consider also adding a minimum like `if (quorum < 2500)` for stronger safety. -3. Read `test/unit/SSVDAO/updateQuorumBps.test.ts` for existing test patterns. -4. Add a test case for `updateQuorumBps(0)` expecting `InvalidQuorum` revert. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add minimum quorum validation to `updateQuorumBps` -- [ ] Sub-task 2: Update/add unit tests for quorum boundary -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-2] ~~`quorumBps` not initialized during upgrade — zero by default~~ -- **Type:** Security Hardening -- **Priority:** P0 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** [PR #431](https://github.com/ssvlabs/ssv-network/pull/431) - -**Requirement:** -Set `quorumBps` during the upgrade initializer (`reinitializer(3)`) to prevent a window where any oracle can unilaterally commit roots. - -**Context:** -`SSVNetworkSSVStakingUpgrade.sol` (line 8) initialized `cooldownDuration` and `defaultOracleIds` but NOT `quorumBps`. After upgrade, `quorumBps` was 0 in storage until the DAO manually called `updateQuorumBps()`. During this window, combined with SEC-1, a single oracle could commit arbitrary Merkle roots. Now fixed — see Resolution below. - -**Resolution:** -`initializeSSVStaking` now accepts `quorumBps` as a third parameter (`uint16`) and validates `if (quorumBps == 0 || quorumBps > 10_000) revert InvalidQuorum()` before writing to storage. Both `upgrade.ts` and `generate-safe-batch.ts` pass `quorumBps` from the deployment config. This closes the initialization window entirely. - -**Acceptance Criteria:** -- [x] `quorumBps` is set during the upgrade initializer to a safe default (7500 = 75% per DIP-X spec) -- [x] Initializer validates `quorumBps != 0` (rejects zero with `InvalidQuorum`) -- [x] Post-upgrade verification confirms `quorumBps != 0` - -**Agent Instructions:** -1. Read `contracts/upgrades/stage/hoodi/SSVNetworkSSVStakingUpgrade.sol` (line 8). -2. Option A (preferred): Add `SSVStorageStaking.load().quorumBps = 7500;` to the `initializeSSVStaking` function. Also add `quorumBps` as a parameter: `initializeSSVStaking(uint64 cooldownDuration, uint32[4] memory defaultOracleIds, uint16 quorumBps)`. Update the function signature in `scripts/upgrade.ts` and `scripts/generate-safe-batch.ts` accordingly. -3. Option B (simpler): Add a hardcoded `SSVStorageStaking.load().quorumBps = 7500;` directly in the initializer without adding a parameter. -4. Emit `QuorumUpdated(7500)` event after setting. -5. Update the initializer ABI references in deploy scripts. -6. Run `npm run test:unit` and `npm run test:integration`. - -#### Sub-items: -- [x] Sub-task 1: Add `quorumBps` initialization to upgrade initializer -- [x] Sub-task 2: Update deploy scripts to match new signature -- [ ] Sub-task 3: Add test verifying `quorumBps` is set after upgrade -- [ ] Sub-task 4: Run full test suite - ---- - -### [SEC-3] ~~`replaceOracle` doesn't invalidate pending votes~~ -- **Type:** Security Hardening -- **Priority:** ~~P1~~ P2 (downgraded) -- **Status:** ✅ Mitigated (owner-only + coordinated oracles) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Resolution:** `replaceOracle` is owner-only (DAO multisig), and the oracle set is a small coordinated group working with the DAO. If an oracle is compromised and replaced mid-vote, the remaining honest oracles can simply propose and vote on a correct root — the compromised oracle's stale vote alone cannot reach quorum (needs 3-of-4). Any edge case is resolvable operationally by the DAO + oracle operators. - -**Original context (for reference):** -`SSVDAO.sol:205-229`: When `replaceOracle` is called, the old oracle's address is removed from `oracleIdOf` but the `oracleId` stays the same. The `hasVoted` mapping uses `oracleId`, so: (1) the old oracle's votes persist and count toward quorum, (2) the new oracle cannot re-vote on pending commitments since `hasVoted[commitmentKey][oracleId]` is already true. A compromised oracle replaced mid-vote still influences quorum. - -**Acceptance Criteria:** -- [ ] Either: pending votes for the replaced oracleId are reset when `replaceOracle` is called -- [ ] Or: this behavior is explicitly documented with risk analysis, and a mechanism exists to clear stale votes if needed -- [ ] Test: replace oracle mid-vote → verify new oracle can vote on pending commitments - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `replaceOracle` (line 205) and `commitRoot` (line 155). -2. Read the `SSVStorageEB` storage struct to understand the `hasVoted` and `commitmentWeight` mappings. -3. To reset pending votes: after replacing the oracle, iterate over pending commitments and clear `hasVoted[commitmentKey][oracleId]` and subtract the old oracle's weight from `commitmentWeight[commitmentKey]`. However, this requires tracking pending commitments, which may not be stored. -4. Simpler alternative: add a `voteNonce` per oracleId. Increment it on replacement. Use `keccak256(commitmentKey, oracleId, voteNonce)` for the hasVoted key. This invalidates all old votes automatically. -5. Ensure the fix doesn't break the quorum mechanism for non-replaced oracles. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Design vote invalidation mechanism -- [ ] Sub-task 2: Implement in `replaceOracle` and `commitRoot` -- [ ] Sub-task 3: Write tests for oracle replacement mid-vote -- [ ] Sub-task 4: Run full test suite - ---- - -### [SEC-4] ~~`updateUnstakeCooldownDuration` allows zero cooldown~~ -- **Type:** Security Hardening -- **Priority:** ~~P1~~ P2 (downgraded) -- **Status:** ✅ Mitigated (owner-only, no accounting risk) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Resolution:** `updateUnstakeCooldownDuration` is owner-only (DAO multisig). Zero cooldown allows instant unstaking but causes no accounting issues — `requestUnstake` still goes through `_syncFees`, `_settleWithBalance`, cSSV burn, and proper reward settlement. The "stake/vote/unstake" attack described below isn't viable because oracle voting is based on oracle addresses (not staking), and staking weight only affects quorum threshold which is DAO-controlled. Same owner-trust argument as SEC-1/SEC-3. - -**Original context (for reference):** -`SSVDAO.sol:245-248`: No minimum check. Zero cooldown allows stake/vote/unstake in one block, defeating the economic security mechanism. An attacker could stake, earn oracle voting rights, manipulate a vote, and immediately unstake. - -**Acceptance Criteria:** -- [ ] `updateUnstakeCooldownDuration(0)` reverts -- [ ] A reasonable minimum is enforced (e.g., 1 day = 86400 seconds) -- [ ] Existing tests updated - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `updateUnstakeCooldownDuration` (line 245). -2. Add `if (duration == 0) revert InvalidCooldownDuration();` (define new error in `ISSVNetworkCore.sol` if needed, or reuse an existing generic error). -3. Consider adding a minimum like `if (duration < 86400) revert ...;` for 1-day minimum. -4. Update `test/unit/SSVDAO/updateUnstakeCooldownDuration.test.ts`. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add minimum cooldown validation -- [ ] Sub-task 2: Update/add unit tests -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-5] ~~`totalStaked` changes between oracle votes (front-running risk)~~ -- **Type:** Security Hardening -- **Priority:** ~~P1~~ P2 (downgraded) -- **Status:** ✅ Mitigated (impractical) - -**Resolution:** Oracles vote 3 times per day across separate blocks. To block quorum, an attacker would need to stake exponentially increasing amounts of SSV between each vote (e.g., 9K → 90K → 900K). This is economically impractical — the attacker's SSV is locked in cooldown, and the capital requirement grows exponentially per blocked commitment. Even if one commitment is blocked, oracles simply propose a new one. Pure liveness attack with no safety impact (can't force bad roots). -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Snapshot `totalStaked` at the start of a voting round (first proposal) and use the snapshotted value for all subsequent votes in that round, preventing front-running via stake/unstake between votes. - -**Context:** -`SSVDAO.sol:155-200` (`commitRoot`): Each oracle vote reads `totalStaked` fresh (line 172). Between votes, `totalStaked` can change via stake/unstake. This makes the quorum threshold inconsistent within a single voting round — someone could front-run oracle votes with large stake/unstake operations to either block legitimate quorum or force premature quorum. - -**Acceptance Criteria:** -- [ ] `totalStaked` is captured once per voting round and used for all votes in that round -- [ ] Weight calculation and threshold calculation use the same snapshotted value -- [ ] Test: oracle A votes, large stake change, oracle B votes → quorum uses consistent weight - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `commitRoot` (line 155). -2. Read `contracts/libraries/storage/SSVStorageEB.sol` to understand what state is tracked per commitment. -3. Design: Add a `snapshotTotalStaked` field to the commitment state. On first vote for a new commitmentKey, snapshot `totalStaked`. On subsequent votes, use the snapshot instead of re-reading. -4. Store the snapshot in `SSVStorageEB` alongside `commitmentWeight`. -5. When a commitment is finalized (root committed), clean up the snapshot. -6. This is a more involved change — be careful not to break existing oracle voting logic. -7. Run `npm run test:unit` and `npm run test:integration`. - -#### Sub-items: -- [ ] Sub-task 1: Add `snapshotTotalStaked` to commitment state in SSVStorageEB -- [ ] Sub-task 2: Snapshot on first vote, use snapshot for subsequent votes -- [ ] Sub-task 3: Clean up snapshot on commitment finalization -- [ ] Sub-task 4: Write tests for consistent weight across votes -- [ ] Sub-task 5: Run full test suite - ---- - -### [SEC-6] Add `nonReentrant` to `migrateClusterToETH` -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add the `nonReentrant` modifier to `migrateClusterToETH` for defense-in-depth. The function calls `CoreLib.transferTokenBalance` (SSV ERC20 transfer) at line 341. - -**Context:** -`SSVClusters.sol:264`: While the SSV token is a standard ERC20 without transfer hooks (so reentrancy via token callback is unlikely), adding `nonReentrant` follows the codebase's established pattern for functions that make external calls. State changes happen before the transfer (checks-effects-interactions), but the modifier provides an additional safety layer. - -**Acceptance Criteria:** -- [ ] `migrateClusterToETH` has the `nonReentrant` modifier -- [ ] Existing migration tests still pass - -**Agent Instructions:** -1. Read `contracts/modules/SSVClusters.sol`, focus on `migrateClusterToETH` (line 264). -2. Add `nonReentrant` modifier to the function signature, following the pattern used by `liquidate`, `withdraw`, etc. -3. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add `nonReentrant` modifier to `migrateClusterToETH` -- [ ] Sub-task 2: Run full test suite - ---- - -### [SEC-7] Add `nonReentrant` to `onCSSVTransfer` -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add `nonReentrant` modifier to `onCSSVTransfer` for defense-in-depth consistency. - -**Context:** -`SSVStaking.sol:169`: The function makes external calls to `ICSSVToken.totalSupply()` and `ICSSVToken.balanceOf()`. While the cSSV token is trusted (deployed by the protocol), the modifier provides protection if cSSV is ever upgraded or replaced. All other staking functions already have `nonReentrant`. - -**Acceptance Criteria:** -- [ ] `onCSSVTransfer` has the `nonReentrant` modifier -- [ ] Existing staking tests still pass - -**Agent Instructions:** -1. Read `contracts/modules/SSVStaking.sol`, focus on `onCSSVTransfer` (line 169). -2. Add `nonReentrant` modifier. Import `SSVReentrancyGuard` if not already imported. -3. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add `nonReentrant` modifier to `onCSSVTransfer` -- [ ] Sub-task 2: Run full test suite - ---- - -### [SEC-8] `reactivate` not emitting warning for removed operators -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -When a cluster is reactivated and one or more of its operators have been removed, emit an event indicating which operators are inactive so users and off-chain systems are aware. - -**Context:** -`SSVClusters.sol:133-185`: `reactivate` calls `updateClusterOperatorsOnReactivation` (line 151), which skips removed operators at `OperatorLib.sol:311`. The cluster is reactivated with fewer active operators, but no event signals this. Users may not realize their cluster is running with reduced operator coverage. - -**Acceptance Criteria:** -- [ ] A new event (e.g., `InactiveOperatorInCluster(uint64 operatorId)`) is emitted for each removed operator during reactivation -- [ ] OR: existing `ClusterReactivated` event includes information about skipped operators -- [ ] Test: reactivate a cluster with a removed operator → verify event emission - -**Agent Instructions:** -1. Read `contracts/modules/SSVClusters.sol`, focus on `reactivate` (line 133). -2. Read `contracts/libraries/OperatorLib.sol`, focus on `updateClusterOperatorsOnReactivation` (line 295), particularly the `ethSnapshot.block != 0` check at line 311. -3. Add return data from `updateClusterOperatorsOnReactivation` that indicates which operators were skipped, or emit events directly from the library function. -4. Define the new event in `ISSVClusters.sol`. -5. Add test in `test/unit/SSVClusters/reactivate.test.ts`. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Define and emit inactive operator event -- [ ] Sub-task 2: Write test for reactivation with removed operator event -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-9] `operatorMaxFee` function signature differs from DIP-X spec -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) -- **DIP-X Review Source:** ETH Payments review finding ETH-13 - -**Requirement:** -The DIP-X governance table specifies `updateMaximumOperatorFee(uint64 maxFee)` but the implementation uses `updateMaximumOperatorFee(uint256 maxFee)`. While the `uint256` parameter is more user-friendly (users pass the full wei value, packing handles conversion), the DIP and implementation should be aligned. - -**Context:** -`SSVDAO.sol:138`: `function updateMaximumOperatorFee(uint256 maxFee)`. The `uint256` value is packed into `PackedETH` (uint64) internally via `PackedETHLib.pack(maxFee)`. This is a cosmetic interface difference, not a functional issue. The `uint256` parameter prevents users from needing to pre-pack their values. However, ABIs and documentation should be consistent. - -**Acceptance Criteria:** -- [ ] Either: DIP-X updated to document `uint256` parameter type (recommended — matches implementation's user-friendly design) -- [ ] Or: implementation changed to `uint64` to match DIP (not recommended — less user-friendly) -- [ ] ABI documentation updated to match - -**Agent Instructions:** -1. This is primarily a documentation alignment task. -2. Read `contracts/modules/SSVDAO.sol`, focus on `updateMaximumOperatorFee` (line 138). -3. Read `contracts/interfaces/ISSVDAO.sol` for the interface declaration. -4. Update the DIP-X governance table to specify `uint256` instead of `uint64`. -5. No code change needed if DIP is updated. - -#### Sub-items: -- [ ] Sub-task 1: Align DIP-X and implementation on parameter type -- [ ] Sub-task 2: Update ABI documentation - ---- - -### [SEC-10] cSSV token lacks governance/voting extensions (ERC20Votes) -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) -- **DIP-X Review Source:** SSV Staking review finding DIP-10 - -**Requirement:** -The DIP-X states: "Staked SSV, represented by cSSV, retains full governance and voting power. Holding cSSV does not reduce a user's ability to participate in DAO governance compared to holding unstaked SSV." However, `CSSVToken.sol` is a plain `ERC20` with no `ERC20Votes` or delegation mechanism. Whether governance rights are preserved depends entirely on off-chain configuration (e.g., Snapshot strategy). - -**Context:** -`CSSVToken.sol:10`: `contract CSSVToken is ERC20`. No `ERC20Votes`, no `ERC20VotesComp`, no delegation mechanism. The SSV DAO uses Snapshot (off-chain governance), which can be configured to count cSSV balances. If the Snapshot strategy includes cSSV, the DIP claim holds. If on-chain governance is ever needed, cSSV holders would lose voting power compared to SSV holders. - -**Acceptance Criteria:** -- [ ] Decision documented: is off-chain governance (Snapshot) the permanent governance mechanism? -- [ ] If yes: verify the Snapshot strategy is updated to include cSSV balances before mainnet launch -- [ ] If on-chain governance is planned: add `ERC20Votes` extension to `CSSVToken` -- [ ] DIP-X updated to clarify governance mechanism (on-chain vs off-chain) - -**Agent Instructions:** -1. Read `contracts/token/CSSVToken.sol` fully. -2. This is primarily a governance/product decision, not a pure code fix. -3. If the team confirms Snapshot is the permanent mechanism: - a. Ensure the Snapshot space strategy counts cSSV - b. Document this in the DIP and deployment runbook -4. If on-chain governance is needed: - a. Add `ERC20Votes` to `CSSVToken` inheritance - b. Override `_afterTokenTransfer` (or `_update` in OZ v5) to call `_transferVotingUnits` - c. Add `clock()` and `CLOCK_MODE()` overrides - d. This requires careful upgrade planning since `CSSVToken` is not upgradeable -5. Flag this for team decision before proceeding. - -#### Sub-items: -- [ ] Sub-task 1: Get team decision on governance mechanism -- [ ] Sub-task 2: Implement chosen approach (Snapshot config update or ERC20Votes addition) -- [ ] Sub-task 3: Update DIP-X governance section - ---- - -### [SEC-11] ~~`hasDeviation` reactivation optimization uses global counter for per-operator decision~~ -- **Type:** Security Hardening -- **Priority:** ~~P1~~ P3 (downgraded) -- **Status:** ✅ Closed (BUG-4 fix resolves root cause) -- **Owner:** N/A -- **Timeline:** N/A -- **Github Link:** N/A - -**Resolution:** The only known path to make `daoTotalEthVUnits` wrong was BUG-4 (double-subtraction on liquidated cluster validator removal), which is fixed in PR #429. The optimization is valid when the global counter is accurate. Removing it wouldn't provide a real safeguard — per-operator `operatorEthVUnits` values are updated by the same code paths as the global counter, so if a bug corrupts one, it likely corrupts both. - -**Original requirement:** -Replace the global `daoTotalEthVUnits` optimization in `updateClusterOperatorsOnReactivation` with per-operator `operatorEthVUnits` reads. - -**Context:** -In `OperatorLib.sol:305`, `bool hasDeviation = sp.daoTotalEthVUnits != uint64(sp.ethDaoValidatorCount) * BPS_DENOMINATOR` uses a global signal for per-operator decisions. While deviations are always non-negative (EB floor=32), this couples correctness to BUG-4's accounting accuracy. If `daoTotalEthVUnits` is ever incorrect (from BUG-4's double-subtraction), reactivation could skip reading actual per-operator deviation, leading to incorrect vUnit accounting. - -**Acceptance Criteria:** -- [ ] Reactivation always reads `seb.operatorEthVUnits[operatorId]` instead of relying on the global optimization -- [ ] No behavior change when global and per-operator values are consistent -- [ ] Correct behavior even when BUG-4 causes `daoTotalEthVUnits` to be incorrect -- [ ] Existing reactivation tests pass - -**Agent Instructions:** -1. Read `contracts/libraries/OperatorLib.sol`, focus on `updateClusterOperatorsOnReactivation` (line 295), particularly the `hasDeviation` check at line 305. -2. Remove the `hasDeviation` optimization and always read `seb.operatorEthVUnits[operatorId]` for each operator. -3. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Remove global `hasDeviation` optimization, use per-operator reads -- [ ] Sub-task 2: Run full test suite - ---- - -### [SEC-12] `deposit()` accepts deposits to liquidated ETH clusters without fee settlement -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add `validateClusterIsNotLiquidated()` to the ETH `deposit()` function, or document the current behavior as intentional. - -**Context:** -In `SSVClusters.sol:190-205`, `deposit()` has no `validateClusterIsNotLiquidated()` check and no fee settlement. Compare with `withdraw()` at line 210 which does both. A user can deposit ETH into a liquidated cluster, but the deposit does not settle fees or reactivate the cluster. The event shows a misleading balance. The user must call `reactivate()` separately to resume the cluster. - -**Concrete example:** Cluster liquidated with `balance=0`, user deposits 1 ETH. No fee settlement occurs. Event shows misleading balance. User must call `reactivate()` separately. - -**Acceptance Criteria:** -- [ ] Either: `deposit()` reverts on liquidated clusters with `ClusterIsLiquidated()` -- [ ] Or: behavior is explicitly documented as intentional with rationale -- [ ] Test: deposit to liquidated cluster → verify defined behavior - -**Agent Instructions:** -1. Read `contracts/modules/SSVClusters.sol`, focus on `deposit` (line 190). -2. Compare with `withdraw()` at line 210 which validates cluster is not liquidated. -3. Add `cluster.validateClusterIsNotLiquidated()` before the balance update. -4. Add a test in `test/unit/SSVClusters/deposit.test.ts` for deposit to liquidated cluster. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add liquidation check to `deposit()` or document as intentional -- [ ] Sub-task 2: Add test for deposit to liquidated cluster -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-13] ~~`OperatorWithdrawn` event doesn't distinguish ETH vs SSV withdrawals~~ -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Keep `OperatorWithdrawn` for ETH withdrawals and introduce a new `OperatorWithdrawnSSV` event for SSV withdrawal earnings. This ensures 3rd-party SDKs and off-chain indexers can correctly track operator earnings by denomination without breaking existing integrations that already listen to `OperatorWithdrawn`. - -**Context:** -In `SSVOperators.sol:337-344`, both `_transferOperatorBalanceUnsafe` (ETH) and `_transferOperatorTokenBalanceUnsafe` (SSV) emit the same `OperatorWithdrawn` event. Off-chain indexers (SDK, oracle, dashboard) cannot distinguish between ETH and SSV withdrawal events, making it impossible to correctly calculate total accumulated operator earnings per denomination. - -**Decision:** -- `OperatorWithdrawn(operatorId, owner, value)` — **kept as-is**, emitted only by `_transferOperatorBalanceUnsafe` (ETH withdrawals) -- `OperatorWithdrawnSSV(operatorId, owner, value)` — **new event**, emitted only by `_transferOperatorTokenBalanceUnsafe` (SSV withdrawals) - -**Resolution:** -`OperatorWithdrawnSSV` event added to `contracts/interfaces/ISSVOperators.sol` with identical signature to `OperatorWithdrawn`. `_transferOperatorTokenBalanceUnsafe` now emits `OperatorWithdrawnSSV`; `_transferOperatorBalanceUnsafe` (ETH) is unchanged. Tests in `withdrawOperatorEarningsSSV.test.ts` updated to assert `OperatorWithdrawnSSV`. `OPERATOR_WITHDRAWN_SSV` constant added to `test/common/events.ts`. All 413 unit tests passing. - -**Acceptance Criteria:** -- [x] `OperatorWithdrawnSSV` event defined in `contracts/interfaces/ISSVOperators.sol` -- [x] `_transferOperatorBalanceUnsafe` emits `OperatorWithdrawn` (ETH) — no change -- [x] `_transferOperatorTokenBalanceUnsafe` emits `OperatorWithdrawnSSV` instead of `OperatorWithdrawn` -- [ ] Off-chain indexers and SDK updated to listen to `OperatorWithdrawnSSV` for SSV earnings -- [ ] ABI change impact documented for oracle and SDK clients - -#### Sub-items: -- [x] Sub-task 1: Define `OperatorWithdrawnSSV` event in `ISSVOperators.sol` -- [x] Sub-task 2: Update `_transferOperatorTokenBalanceUnsafe` to emit `OperatorWithdrawnSSV` -- [x] Sub-task 3: Update tests for new event signature -- [x] Sub-task 4: Run full test suite - ---- - -### [SEC-14] `commitRoot` accepts `bytes32(0)` as merkleRoot — permanently wastes block slot -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add a zero-root check to `commitRoot` to prevent permanently wasting a block slot with an unusable root. - -**Context:** -In `SSVDAO.sol:155`, `commitRoot` accepts `bytes32(0)` as a valid merkle root. The zero root is stored but unusable — `SSVClusters.sol:426` reverts on zero root during `updateClusterBalance`. Meanwhile, `latestCommittedBlock` advances, so the block slot is permanently consumed and cannot be reused. - -**Acceptance Criteria:** -- [ ] `commitRoot` reverts with `InvalidRoot()` when `merkleRoot == bytes32(0)` -- [ ] Define `InvalidRoot` error if it doesn't exist -- [ ] Test: commit zero root → expect revert - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `commitRoot` (line 155). -2. Add `if (merkleRoot == bytes32(0)) revert InvalidRoot();` near the top of the function. -3. Define `InvalidRoot` error in `contracts/interfaces/ISSVNetworkCore.sol` if not already defined. -4. Add test in `test/unit/SSVDAO/commitRoot.test.ts`. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add zero-root validation to `commitRoot` -- [ ] Sub-task 2: Add test for zero-root revert -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-15] Min/max operator fee can be set to contradictory values -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add cross-validation between `updateMinimumOperatorEthFee` and `updateMaximumOperatorFee` to prevent contradictory values where `minFee > maxFee`. - -**Context:** -In `SSVDAO.sol:138-149`, neither setter cross-validates against the other. If `minFee > maxFee`, no valid non-zero fee exists for operator registration, effectively blocking all new operator registrations and fee changes. While both are owner-only functions, a configuration mistake could cause unexpected operational impact. - -**Acceptance Criteria:** -- [ ] `updateMinimumOperatorEthFee` reverts if the new min would exceed current max -- [ ] `updateMaximumOperatorFee` reverts if the new max would be below current min -- [ ] Test: set contradictory min/max → expect revert - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focus on `updateMinimumOperatorEthFee` (line 147) and `updateMaximumOperatorFee` (line 138). -2. In `updateMinimumOperatorEthFee`: add check `if (packed > sp.operatorMaxFeeETH) revert ...;`. -3. In `updateMaximumOperatorFee`: add check `if (packed < sp.operatorMinFeeETH) revert ...;`. -4. Add tests for both cross-validation directions. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add cross-validation to both fee setters -- [ ] Sub-task 2: Add tests for contradictory fee values -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-16] Missing zero-value/zero-address guards on deposit and withdraw -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add zero-value and zero-address guards to deposit and withdraw functions to prevent meaningless transactions. - -**Context:** -- `SSVClusters.sol:190` (`deposit`): no zero-address check for `clusterOwner`, no `msg.value > 0` check. -- `SSVClusters.sol:210` (`withdraw`): no zero-amount check. -- `SSVDAO.sol:52` (`withdrawNetworkSSVEarnings`): no zero-amount check. -These allow gas-wasting no-op transactions that emit misleading events with zero values. - -**Acceptance Criteria:** -- [ ] `deposit()` reverts when `msg.value == 0` -- [ ] `withdraw()` reverts when `amount == 0` -- [ ] `withdrawNetworkSSVEarnings()` reverts when `amount == 0` -- [ ] Tests added for each zero-value guard - -**Agent Instructions:** -1. Read `contracts/modules/SSVClusters.sol`, focus on `deposit` (line 190) and `withdraw` (line 210). -2. Read `contracts/modules/SSVDAO.sol`, focus on `withdrawNetworkSSVEarnings` (line 52). -3. Add `require(msg.value > 0)` to deposit, `require(amount > 0)` to withdraw functions. -4. Add tests for each guard. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add zero-value guards to deposit and withdraw -- [ ] Sub-task 2: Add tests for zero-value reverts -- [ ] Sub-task 3: Run full test suite - ---- - -### [SEC-16b] ~~Dust ETH stranded in `accrued` after full cSSV transfer + claim~~ -- **Type:** Security Hardening -- **Priority:** P1 -- **Status:** ✅ Fixed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -When a user transfers all their cSSV tokens and then calls `claimEthRewards`, a sub-`ETH_DEDUCTED_DIGITS` dust remainder is left in `s.accrued[msg.sender]`. Because the user holds no cSSV, `_settle` will never add to it again, so the dust is permanently unclaimable (any future `claimEthRewards` call hits the `payout == 0` revert). From the user's perspective the UI shows a non-zero claimable balance that can never be withdrawn. - -**Context:** -- `SSVStaking.sol:123`: `payout = claimable - (claimable % ETH_DEDUCTED_DIGITS)` — the remainder stays in `accrued`. -- `SSVStaking.sol:139` (original): `s.accrued[msg.sender] = claimable - payout` — remainder is preserved even when the user holds 0 cSSV. -- Reproduction: stake → transfer all cSSV to another address → call `claimEthRewards` → `accrued` contains dust that can never be claimed or grown. - -**Fix applied in `SSVStaking.sol:139-140`:** -```solidity -uint256 remainder = claimable - payout; -s.accrued[msg.sender] = (remainder != 0 && ICSSVToken(CSSV_ADDRESS).balanceOf(msg.sender) == 0) ? 0 : remainder; -``` -When `balanceOf == 0` and there is dust remainder, it is zeroed rather than preserved. The zeroed wei remains in `stakingEthPoolBalance` and `ethDaoBalance` — it is never deducted from the pool — so it is effectively redistributed to remaining stakers via future `accEthPerShare` increments in `_syncFees`. - -**Acceptance Criteria:** -- [x] `claimEthRewards` zeros `accrued` when caller holds 0 cSSV -- [x] After a full transfer + claim, `accrued[user] == 0` -- [x] Test: stake → transfer all cSSV → claim → assert `accrued == 0` -- [x] Test: user with cSSV still keeps remainder (no false positive) - -#### Sub-items: -- [x] Sub-task 1: Apply fix in `SSVStaking.sol` -- [x] Sub-task 2: Add regression tests (2 tests in `claimEthRewards.test.ts`) -- [x] Sub-task 3: Run full staking test suite — 64/64 passing - ---- - -### [SEC-17] DAO governance functions lack input guardrails (min/max/non-zero) -- **Type:** Security Hardening -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add input validation guardrails (non-zero, min/max bounds) to all DAO-governed setter functions in `SSVDAO.sol`. Currently most functions accept any value including `0`, which can be harmful to the protocol. While the DAO multisig (5/7) mitigates the risk of accidental misconfiguration, defense-in-depth requires on-chain guardrails. - -**⚠️ Action required:** Consult Product/governance team to define the concrete min/max bounds for each parameter before implementation. The table below uses `TBD` placeholders. - -**Context:** -`SSVDAO.sol` contains 12 setter functions. Only 2 have any input validation today: -- `updateLiquidationThresholdPeriod` / `updateLiquidationThresholdPeriodSSV`: enforce `>= MINIMAL_LIQUIDATION_THRESHOLD` (21,480 blocks) -- `updateQuorumBps`: enforces `<= BPS_DENOMINATOR` (10,000) — but allows 0 (see SEC-1) - -All other setters accept any value, including 0 and extreme values that could break protocol invariants. - -**Affected functions and proposed guardrails:** - -| # | Function | Parameter | Current guard | Proposed guardrail | Risk if unguarded | -|---|---|---|---|---|---| -| 1 | `updateNetworkFee` | `fee` (wei/block) | None | `fee <= TBD_MAX_NETWORK_FEE` | Extreme fee drains all clusters rapidly | -| 2 | `updateNetworkFeeSSV` | `fee` (SSV/block) | None | `fee <= TBD_MAX_NETWORK_FEE_SSV` | Same as above for SSV clusters | -| 3 | `updateOperatorFeeIncreaseLimit` | `percentage` | None | `percentage > 0 && percentage <= TBD_MAX_INCREASE_LIMIT` | `0` blocks all operator fee increases forever; extreme value allows unlimited fee jumps | -| 4 | `updateDeclareOperatorFeePeriod` | `timeInSeconds` | None | `timeInSeconds >= TBD_MIN_DECLARE_PERIOD && timeInSeconds <= TBD_MAX_DECLARE_PERIOD` | `0` allows instant fee declarations (no review window); extreme value blocks fee changes | -| 5 | `updateExecuteOperatorFeePeriod` | `timeInSeconds` | None | `timeInSeconds >= TBD_MIN_EXECUTE_PERIOD && timeInSeconds <= TBD_MAX_EXECUTE_PERIOD` | `0` allows instant fee execution (no user reaction window); extreme value blocks fee changes | -| 6 | `updateLiquidationThresholdPeriod` | `blocks` | `>= 21,480` ✅ | Add max: `blocks <= TBD_MAX_LIQUIDATION_THRESHOLD` | ✅ Min exists. Extreme max could make liquidation economically unviable | -| 7 | `updateLiquidationThresholdPeriodSSV` | `blocks` | `>= 21,480` ✅ | Add max: `blocks <= TBD_MAX_LIQUIDATION_THRESHOLD_SSV` | Same as above for SSV | -| 8 | `updateMinimumLiquidationCollateral` | `amount` (wei) | None | `amount > 0 && amount <= TBD_MAX_MIN_COLLATERAL` | `0` allows clusters with no safety margin; extreme value blocks cluster creation | -| 9 | `updateMinimumLiquidationCollateralSSV` | `amount` (SSV) | None | `amount > 0 && amount <= TBD_MAX_MIN_COLLATERAL_SSV` | Same as above for SSV | -| 10 | `updateMaximumOperatorFee` | `maxFee` (wei) | None | `maxFee > 0 && maxFee >= sp.minimumOperatorEthFee` | `0` blocks all operator registrations; see also SEC-15 for cross-validation | -| 11 | `updateMinimumOperatorEthFee` | `minFee` (wei) | None | `minFee <= sp.operatorMaxFee` | Extreme value blocks operator registrations; see also SEC-15 for cross-validation | -| 12 | `updateQuorumBps` | `quorum` | `<= 10,000` | Add min: `quorum >= TBD_MIN_QUORUM_BPS` | `0` allows single-oracle root commits; see SEC-1 | -| 13 | `updateUnstakeCooldownDuration` | `duration` | None | `duration >= TBD_MIN_COOLDOWN && duration <= TBD_MAX_COOLDOWN` | `0` allows instant unstaking (no cooldown); see SEC-4 | - -**Note:** Items 10-11 overlap with SEC-15, and items 12-13 overlap with SEC-1/SEC-4. Those items can be closed as sub-items of this one, or this item can reference them as "already covered" — team's choice. - -**Acceptance Criteria:** -- [ ] Product/governance team provides concrete min/max values for all `TBD` placeholders -- [ ] Each function in the table above has the agreed guardrail implemented -- [ ] Existing guardrails (liquidation threshold min) are preserved -- [ ] Cross-validation between related parameters (min/max operator fee) is enforced -- [ ] All new guards revert with descriptive custom errors -- [ ] Unit tests cover each boundary: at min, at max, below min (revert), above max (revert) -- [ ] Existing tests updated where they set extreme/zero values that now revert -- [ ] No behavioral change for values within the accepted range - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol` fully — all setter functions. -2. Read `contracts/libraries/ProtocolLib.sol` — `updateNetworkFee` and `updateNetworkFeeSSV` delegate here. -3. Read `contracts/libraries/storage/SSVStorageProtocol.sol` for the `StorageProtocol` struct fields. -4. Read `contracts/libraries/storage/SSVStorageStaking.sol` for the `StorageStaking` struct fields. -5. **Wait for Product to fill in `TBD` values before implementing.** If values are not yet defined, implement only the non-zero guards (where `0` is clearly harmful) and add `// TODO: add max bound per SEC-17` comments. -6. Define new custom errors in `contracts/interfaces/ISSVNetworkCore.sol` as needed (e.g., `InvalidParameter()`, `ValueOutOfRange()`). -7. For each function, add the guard at the top before any state changes. -8. Update tests in `test/unit/SSVDAO/` for each modified function. -9. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Get Product sign-off on min/max bounds for all parameters -- [ ] Sub-task 2: Implement non-zero guards for all unguarded setters -- [ ] Sub-task 3: Implement min/max bounds once Product provides values -- [ ] Sub-task 4: Add unit tests for each boundary (at min, at max, below min, above max) -- [ ] Sub-task 5: Reconcile with SEC-1, SEC-4, SEC-15 (close or cross-reference) -- [ ] Sub-task 6: Run full test suite - ---- - -### [SEC-18] ETH-only operators can call `withdrawOperatorEarningsSSV` (no-op but wastes gas) -- **Type:** Security Hardening -- **Priority:** P3 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add an early-exit guard in `withdrawOperatorEarningsSSV` (or its underlying helper) that reverts when called by the owner of an ETH-only operator, preventing a pointless transaction that wastes gas. - -**Context:** -Operators registered after the v2.0.0 migration may be ETH-only (`snapshot.block == 0`, `ethSnapshot.block != 0`). New validator registrations for these operators use the ETH payment path exclusively, so they can never accumulate SSV earnings. Despite this, nothing prevents their owner from calling `withdrawOperatorEarningsSSV`. The call will succeed (the SSV balance is 0, so no tokens move), but the user pays gas for a no-op. Echidna invariants already confirm that the accounting system cannot credit SSV earnings to ETH-only operators, so there is no risk of fund loss — this is purely a UX/gas waste issue. - -**Acceptance Criteria:** -- [ ] `withdrawOperatorEarningsSSV` reverts with a descriptive error (e.g., `NoSSVEarnings()`) when the operator has `snapshot.block == 0` (ETH-only) -- [ ] ETH-capable operators (both `snapshot.block != 0` and `ethSnapshot.block != 0`) are unaffected -- [ ] Confirm via Echidna that SSV balance of ETH-only operators cannot be artificially inflated - -**Agent Instructions:** -1. Read `contracts/modules/SSVOperators.sol`, focus on `withdrawOperatorEarningsSSV` and its internal helper. -2. After the `checkOwner` call, add: `if (operator.snapshot.block == 0) revert NoSSVEarnings();` -3. Define `NoSSVEarnings` error in `contracts/interfaces/ISSVNetworkCore.sol` if not already present. -4. Add a unit test: register an ETH-only operator → call `withdrawOperatorEarningsSSV` → expect revert with `NoSSVEarnings`. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Add ETH-only operator guard to `withdrawOperatorEarningsSSV` -- [ ] Sub-task 2: Define `NoSSVEarnings` custom error -- [ ] Sub-task 3: Add unit test for ETH-only operator calling SSV withdrawal -- [ ] Sub-task 4: Run full test suite - ---- - -### [SEC-19] `minBlocksBetweenUpdates` never initialized — EB update rate limit silently disabled -- **Type:** Security Hardening -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Initialize `minBlocksBetweenUpdates` to a non-zero value during the upgrade, and add a governance setter so it can be adjusted post-deployment. - -**Context:** -`StorageEB.minBlocksBetweenUpdates` is a `uint32` in diamond storage. It is read by `_verifyEBUpdateFrequency` to rate-limit how often a cluster's EB can be updated: - -```solidity -if (ebSnapshot.lastUpdateBlock != 0 && block.number < ebSnapshot.lastUpdateBlock + seb.minBlocksBetweenUpdates) { - revert UpdateTooFrequent(); -} -``` - -Because the field is never set — neither in the upgrade initializer nor via any governance function — it defaults to `0`. The condition `block.number < lastUpdateBlock + 0` is always `false`, so the rate limit is **completely inoperative**. Any caller can submit a valid `updateClusterBalance` proof every block for every cluster. - -The threat model (`docs/audit/07-trust-boundaries-integrations.md`) explicitly lists this rate limit as a mitigation against forced EB update spam and auto-liquidation attacks. With it disabled, an attacker holding a valid oracle proof of a cluster's reduced EB can trigger auto-liquidation in the same block as a root commitment, with no cooldown. - -**Acceptance Criteria:** -- [ ] `minBlocksBetweenUpdates` initialized to a non-zero value in the upgrade reinitializer (suggested: `7200` blocks ≈ 1 day, matching oracle sweep frequency) -- [ ] Governance setter added (e.g. `setMinBlocksBetweenUpdates(uint32)`, owner-only) -- [ ] Setter emits an event (e.g. `MinBlocksBetweenUpdatesUpdated(uint32)`) -- [ ] Unit test: second `updateClusterBalance` within the cooldown window reverts with `UpdateTooFrequent` -- [ ] Unit test: `updateClusterBalance` succeeds after cooldown window passes -- [ ] Governance parameter documented in SPEC.md §11 and FLOWS.md - -**Agent Instructions:** -1. In the upgrade reinitializer, add: `SSVStorageEB.load().minBlocksBetweenUpdates = 7200;` -2. Add a governance setter in `SSVDAO.sol` (or equivalent): `function setMinBlocksBetweenUpdates(uint32 blocks) external onlyOwner`. -3. Emit `MinBlocksBetweenUpdatesUpdated(blocks)` from the setter. -4. Add the event to `ISSVNetworkCore.sol` or the DAO interface. -5. Add unit tests covering both the cooldown revert and the post-cooldown success path. -6. Update SPEC.md §11 governance parameters table and FLOWS.md §3.3 preconditions. -7. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Initialize `minBlocksBetweenUpdates` in upgrade reinitializer -- [ ] Sub-task 2: Add governance setter and event -- [ ] Sub-task 3: Unit tests for rate-limit enforcement -- [ ] Sub-task 4: Update SPEC.md and FLOWS.md - ---- - -### [SEC-20] ~~Oracle Quorum Can Be Set to Zero~~ -- **Type:** Security Hardening -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** 2026-03-16 -- **Github Link:** (empty) - -**Resolution:** -`updateQuorumBps` now rejects zero quorum: `if (quorum == 0 || quorum > BPS_DENOMINATOR) revert InvalidQuorum()`. This prevents the owner from accidentally disabling the multi-oracle quorum threshold. Updated unit tests to expect revert on `updateQuorumBps(0)` and added a test for the minimum valid quorum of 1 bps. - -**Acceptance Criteria:** -- [x] `updateQuorumBps(0)` reverts with `InvalidQuorum()` -- [x] `updateQuorumBps(1)` succeeds (minimum valid quorum) -- [x] Existing tests for `updateQuorumBps` updated to reflect new validation ---- - -## Unit Test Completeness - -### [TEST-1] Validator register/remove with non-zero operator fees -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add unit tests for validator registration and removal with operators that have non-zero ETH fees. Currently ALL SSVValidator tests use operators with `fee=0` (the default), leaving the entire fee settlement mechanism untested. - -**Context:** -This is the #1 systemic test gap. The fee settlement mechanism (`updateClusterOperators` / `settleClusterBalance`) during register/remove has zero real coverage with actual fee deductions. If fee settlement is wrong, clusters are overcharged or undercharged on every register/remove. The EB-weighted fee model (`vUnits`) makes this even more critical. - -**Acceptance Criteria:** -- [ ] Test: Register validator with 4 operators each charging different ETH fees → verify cluster balance deduction = `blocksDelta * sum(operatorFees) * vUnits / BPS_DENOMINATOR * ETH_DEDUCTED_DIGITS` -- [ ] Test: Register second validator after N blocks → verify fees from first validator settled correctly before adding second -- [ ] Test: Remove validator with non-zero fees → verify operator earnings accumulated match expected -- [ ] Test: Bulk register 10 validators with non-zero fees → verify total deduction -- [ ] All new tests pass - -**Agent Instructions:** -1. Read `test/unit/SSVValidator/registerValidator.test.ts` to understand existing patterns and test helpers. -2. Read `test/helpers/contract-helpers.ts` to understand how operators are registered and fees are set. Look for `registerOperator` helper and how `declareOperatorFee` / `executeOperatorFee` work. -3. Read `test/common/constants.ts` for fee-related constants. -4. Create a new test file or add a describe block to existing files. Use the existing `CONFIG` fixture pattern. -5. For each test: - - Register operators with non-zero ETH fees (use `declareOperatorFee` → advance blocks → `executeOperatorFee`) - - Register validators - - Advance blocks with `mine(N)` - - Perform the operation (register/remove) - - Calculate expected fees independently: `blocksDelta * sum(PackedETH.unwrap(fee)) * vUnits / BPS_DENOMINATOR * ETH_DEDUCTED_DIGITS` - - Assert cluster balance = initial deposit - expected fees - - Assert operator earnings match expected accumulation -6. Use `ethers.provider.getBalance` for ETH balance checks and the SSVViews contract for cluster/operator balance queries. -7. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Register validator with non-zero operator fees — verify cluster balance deduction -- [ ] Sub-task 2: Sequential validator registration with fee settlement verification -- [ ] Sub-task 3: Remove validator with non-zero fees — verify operator earnings -- [ ] Sub-task 4: Bulk register with non-zero fees — verify total deduction - ---- - -### [TEST-2] ~~EB-weighted operator earnings accumulation~~ -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add unit tests verifying that operators earn proportionally more when serving clusters with higher effective balance. The EB settlement tests check fee deductions from the cluster side but don't verify operator earnings. - -**Context:** -The vUnit model is the core economic change in v2.0.0. If operator earnings don't scale with EB, the entire incentive model is broken. No unit test currently verifies the operator earnings side of EB-weighted accounting. - -**Acceptance Criteria:** -- [ ] Test: Operator serves two clusters, EB=32 and EB=64 → after N blocks, verify operator earnings = `(blocks * fee * 10000 + blocks * fee * 20000) / BPS_DENOMINATOR * ETH_DEDUCTED_DIGITS` -- [ ] Test: Operator fee change after EB update → verify earnings split correctly at boundary -- [ ] Test: `withdrawOperatorEarnings` after EB-weighted accrual → verify exact ETH withdrawn matches expected - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/ebSettlement.test.ts` to understand EB test patterns. -2. Read `test/unit/SSVOperators/withdrawOperatorEarnings.test.ts` for withdrawal test patterns. -3. Read `contracts/libraries/OperatorLib.sol`, focus on `updateSnapshot` to understand how operator earnings accumulate with vUnits. -4. Create tests that: - - Register an operator - - Create two clusters with different EBs (use `updateClusterBalance` with Merkle proofs to set EB) - - Advance blocks - - Verify operator earnings via `SSVViews.getOperatorEarnings(operatorId)` - - Withdraw and verify exact ETH amount -5. Use the Merkle proof helpers in `test/helpers/` to create valid proofs for EB updates. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Operator earning from two clusters with different EBs -- [ ] Sub-task 2: Operator fee change boundary with EB-weighted clusters -- [ ] Sub-task 3: Withdraw operator earnings after EB-weighted accrual - ---- - -### [TEST-3] Balance delta assertions in liquidation paths -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add balance delta assertions to liquidation tests. Current tests check events and state transitions but do not assert actual ETH/SSV token transfer amounts. - -**Context:** -A liquidation could emit the correct event but transfer the wrong amount (or nothing). Without balance delta assertions, incorrect transfer logic is invisible to the test suite. - -**Acceptance Criteria:** -- [ ] Test: Liquidate ETH cluster → assert `liquidator.balance.after - liquidator.balance.before == cluster.remainingBalance` (accounting for gas) -- [ ] Test: Liquidate SSV cluster → assert `SSVToken.balanceOf(liquidator).after - before == cluster.remainingSSVBalance` -- [ ] Test: Liquidate cluster with 0 remaining balance → assert no ETH transferred -- [ ] Test: Self-liquidation → assert owner receives remaining balance - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/liquidate.test.ts` and `test/unit/SSVClusters/liquidateSSV.test.ts`. -2. Add balance capture before/after each liquidation call: - ```typescript - const balanceBefore = await ethers.provider.getBalance(liquidator.address); - const tx = await ssvNetwork.connect(liquidator).liquidate(...); - const receipt = await tx.wait(); - const gasCost = receipt.gasUsed * receipt.gasPrice; - const balanceAfter = await ethers.provider.getBalance(liquidator.address); - expect(balanceAfter - balanceBefore + gasCost).to.equal(expectedReward); - ``` -3. For SSV token liquidations, use `SSVToken.balanceOf()` instead of native balance. -4. Calculate expected remaining balance independently using the cluster balance formula. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: ETH liquidation balance delta assertions -- [ ] Sub-task 2: SSV liquidation balance delta assertions -- [ ] Sub-task 3: Zero-balance liquidation -- [ ] Sub-task 4: Self-liquidation balance check - ---- - -### [TEST-4] ~~`updateClusterBalance` on liquidated clusters~~ -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** ✅ **CLOSED** -- **Owner:** PR #447 + enhancements -- **Timeline:** Completed 2026-02-25 -- **Github Link:** [test/unit/SSVClusters/updateClusterBalance.test.ts](../test/unit/SSVClusters/updateClusterBalance.test.ts) (lines 293-653), [test/integration/SSVNetwork/clusters.test.ts](../test/integration/SSVNetwork/clusters.test.ts) (lines 753-817) - -**Requirement:** -Add tests for calling `updateClusterBalance` (EB oracle update) on an already-liquidated cluster. - -**Context:** -No test exists for this path. If the contract doesn't handle it, oracle updates on liquidated clusters could corrupt accounting or revert unexpectedly. - -**Acceptance Criteria:** -- [x] Test: Call `updateClusterBalance` with valid proof on a liquidated cluster → verify defined behavior (revert or update EB without settling fees) -- [x] Test: EB update that makes a liquidated cluster even more insolvent → verify no state corruption -- [x] **BONUS**: Multi-validator liquidated cluster EB update -- [x] **BONUS**: EB decrease on liquidated cluster (penalty scenario) -- [x] **BONUS**: Liquidated cluster with implicit EB → first EB update transitions to explicit tracking - -**Implementation Summary:** -1. **Unit tests** ([updateClusterBalance.test.ts](../test/unit/SSVClusters/updateClusterBalance.test.ts)): - - Line 293-337: Basic liquidated cluster EB update — verifies EB snapshot updated, cluster stays inactive, no fee settlement - - Line 339-416: EB increase on insolvent liquidated cluster — verifies no operator/DAO vUnit corruption - - Line 463-527: **NEW** Multi-validator liquidated cluster EB update - - Line 529-602: **NEW** EB decrease on liquidated cluster (penalty scenario) - - Line 604-653: **NEW** Implicit→explicit EB transition on liquidated cluster - -2. **Integration test** ([clusters.test.ts](../test/integration/SSVNetwork/clusters.test.ts)): - - Line 753-817: E2E flow with oracle quorum setup and multiple EB updates on liquidated cluster - -3. **Additional improvements**: - - Fixed loose comparators in integration tests — now uses exact formula-based assertions per SSV standards - - Added block number tracking for precise fee calculations - - All tests passing with 100% exact `.to.equal()` assertions - -#### Sub-items: -- [x] Sub-task 1: `updateClusterBalance` on liquidated cluster — basic behavior -- [x] Sub-task 2: EB increase on already-insolvent liquidated cluster -- [x] Sub-task 3: Multi-validator liquidated cluster EB update -- [x] Sub-task 4: EB decrease on liquidated cluster -- [x] Sub-task 5: Implicit→explicit EB transition - ---- - -### [TEST-5] Oracle quorum edge cases -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add comprehensive edge case tests for the oracle quorum mechanism in `commitRoot`. - -**Context:** -Only basic quorum tests exist. Missing: boundary conditions, weight manipulation, oracle replacement during voting, quorum parameter changes mid-vote. - -**Acceptance Criteria:** -- [ ] Test: Quorum at exactly 100% — all 4 oracles must vote -- [ ] Test: Quorum at 1 bps — single oracle vote commits -- [ ] Test: Oracle replaced between proposing and committing — verify vote behavior -- [ ] Test: Quorum changed between votes — verify consistent threshold -- [ ] Test: Oracles propose different roots for same block number — verify correct root wins - -**Agent Instructions:** -1. Read `test/unit/SSVDAO/commitRoot.test.ts` for existing patterns. -2. Read `contracts/modules/SSVDAO.sol`, focus on `commitRoot` (line 155) for the voting/quorum logic. -3. Add tests for each scenario. For oracle replacement mid-vote, call `replaceOracle` between two `commitRoot` calls for the same block number. -4. Use `updateQuorumBps` to set boundary values before testing. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: 100% quorum boundary test -- [ ] Sub-task 2: Minimal quorum (1 bps) test -- [ ] Sub-task 3: Oracle replacement mid-vote -- [ ] Sub-task 4: Quorum change mid-vote -- [ ] Sub-task 5: Conflicting root proposals - ---- - -### [TEST-6] EB decrease scenarios -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add unit tests for effective balance decreases. All current EB tests only cover increases (32→higher). Validators can have EB decrease due to penalties. - -**Context:** -If EB decreases aren't handled correctly, vUnits could be wrong, operators could be overpaid, or liquidation thresholds could be miscalculated. EB decrease is a completely untested code path. - -**Acceptance Criteria:** -- [ ] Test: EB decrease from 64 ETH to 32 ETH → verify vUnits decrease, operator fees decrease, liquidation threshold recalculated -- [ ] Test: EB decrease below 32 ETH → should revert with `EBBelowMinimum` -- [ ] Test: EB decrease while cluster is near liquidation threshold → verify decrease triggers liquidation if below threshold -- [ ] Test: Operator deviation negative after EB decrease → verify `daoTotalEthVUnits` updated correctly - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/ebSettlement.test.ts` and `test/unit/SSVClusters/updateClusterBalance.test.ts`. -2. Create test scenarios where EB starts high and is updated to a lower value via `updateClusterBalance` with a Merkle proof for the lower EB. -3. Use the Merkle tree helpers to generate proofs for decreased EB values. -4. Verify vUnits, deviation, burn rate, and liquidation threshold after decrease. -5. For the below-32-ETH case, verify the contract reverts with the correct error. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: EB decrease from 64→32 ETH — vUnits and fee verification -- [ ] Sub-task 2: EB below minimum (< 32 ETH) — revert test -- [ ] Sub-task 3: EB decrease triggering liquidation -- [ ] Sub-task 4: Negative deviation after EB decrease - ---- - -### [TEST-7] Reentrancy in staking functions -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** ✅ Complete -- **Owner:** Claude -- **Timeline:** 2026-02-26 -- **Github Link:** PR #452 - -**Requirement:** -Add reentrancy tests for SSVStaking functions that transfer ETH or tokens. These functions are marked `nonReentrant` but no test verifies the protection works. - -**Context:** -`claimEthRewards`, `withdrawUnlocked`, `stake`, `requestUnstake` all handle ETH or SSV token transfers. Reentrancy via a `receive()` hook could theoretically drain rewards. The `nonReentrant` modifier should prevent this, but it's untested. The existing SSVOperators reentrancy test (`test/unit/SSVOperators/reentrancy.test.ts`) can serve as a pattern. - -**Acceptance Criteria:** -- [x] Test: Attacker contract with `receive()` hook calls `claimEthRewards` reentrantly → verify reverts -- [x] ~~Test: Attacker calls `withdrawUnlocked` reentrantly during SSV token transfer~~ → **NOT NEEDED** (see resolution) -- [x] All reentrancy tests use a custom attacker contract deployed in the test - -**Resolution:** -✅ **`claimEthRewards` reentrancy test implemented:** -- Unit test: `test/unit/SSVStaking/reentrancy.test.ts` -- Integration test: `test/integration/SSVNetwork.test.ts` (line 3414-3447) -- Attacker contract: `contracts/test/mocks/MaliciousClaimEthRewards.sol` -- **This is a valid attack vector** because `claimEthRewards()` sends ETH which triggers `receive()` hooks - -❌ **`withdrawUnlocked`, `stake`, `requestUnstake` reentrancy tests NOT needed:** -- **Reason:** SSVToken (`contracts/token/SSVToken.sol`) is a standard ERC20 with **no callbacks** -- Standard ERC20 `transfer()` and `transferFrom()` do **not** call back to the recipient -- **No `receive()` hook is triggered** during token transfers -- **Reentrancy is impossible** during these operations in production -- The `nonReentrant` modifiers on these functions are **defensive programming** but protect against **no real attack vector** -- A reentrancy test would require a malicious token contract, which doesn't match the production SSVToken implementation - -**Conclusion:** -Only `claimEthRewards()` has a real reentrancy attack surface (ETH transfers trigger `receive()` hooks). The function is properly protected and tested. Other staking functions interact only with standard ERC20 tokens (SSV, cSSV) which have no callback mechanisms. - -#### Sub-items: -- [x] Sub-task 1: `claimEthRewards` reentrancy test ✅ -- [x] Sub-task 2: `withdrawUnlocked` reentrancy test → **Not needed** (no attack vector) - ---- - -### [TEST-8] Forbid creating clusters with removed operators -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add explicit tests for PR #410 (forbid creating clusters with removed operators). Verify both `registerValidator` and `bulkRegisterValidator` revert when given a removed operator ID. - -**Context:** -PR #410 added a fix but no explicit test exists for this scenario. Creating clusters with removed operators would result in stuck funds with no one to service the validator. - -**Acceptance Criteria:** -- [ ] Test: Register validator using operatorIds where one operator was previously removed → should revert -- [ ] Test: Bulk register where one of the operator IDs belongs to a removed operator → should revert - -**Agent Instructions:** -1. Read `test/unit/SSVValidator/registerValidator.test.ts` and `test/unit/SSVValidator/bulkRegisterValidator.test.ts`. -2. Add a test that: registers 4 operators, removes one, then tries to register a validator with all 4 operator IDs → expect revert. -3. Add the same for bulk registration. -4. Identify the specific error that the contract reverts with (likely `OperatorDoesNotExist` — check `contracts/libraries/OperatorLib.sol`). -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: `registerValidator` with removed operator → revert test -- [ ] Sub-task 2: `bulkRegisterValidator` with removed operator → revert test - ---- - -### [TEST-9] ~~Migration balance accounting verification~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests that verify exact SSV refund amounts and ETH deposit amounts during migration, calculated independently from contract logic. - -**Context:** -Migration tests verify events and state but don't verify exact token transfer amounts against independently calculated values. - -**Acceptance Criteria:** -- [x] Test: Migrate after 1000 blocks → verify SSV refund = `initial_deposit - (blocks * sum(ssv_fees) * validatorCount) * DEDUCTED_DIGITS` -- [x] Test: Migrate with partial SSV balance remaining → verify exact token transfer amount -- [x] Test: Migrate cluster where operators have both SSV and ETH fees set → verify ETH side correctly initialized - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/migrateClusterToETH.test.ts` for existing patterns. -2. Add independent balance calculations using JavaScript BigInt arithmetic matching the contract's formula. -3. Assert `SSVToken.balanceOf(owner).after - SSVToken.balanceOf(owner).before == expectedRefund`. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Exact SSV refund after N blocks -- [x] Sub-task 2: Migration with partial balance -- [x] Sub-task 3: Migration with dual SSV/ETH fees - ---- - -### [TEST-10] ~~Operator fee change + EB burn rate interaction~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests combining operator fee changes (declare/execute/reduce) with EB-weighted clusters. - -**Context:** -No tests combine operator fee changes with EB-weighted clusters. The burn rate depends on both operator fee and vUnits, and fee changes must properly settle the old rate before applying the new one. - -**Acceptance Criteria:** -- [x] Test: Operator increases fee while serving EB=64 cluster → verify burn rate doubles -- [x] Test: Operator reduces fee with EB-weighted cluster → verify savings reflected -- [x] Test: Fee execution changes mid-block for EB-weighted cluster → verify boundary accounting - -**Agent Instructions:** -1. Read `test/unit/SSVOperators/declareOperatorFee.test.ts` and `test/unit/SSVOperators/executeOperatorFee.test.ts`. -2. Read `test/unit/SSVClusters/ebSettlement.test.ts`. -3. Create combined tests: register operator with fee, create cluster with EB, change fee, verify cluster balance reflects correct burn rate split. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Fee increase with EB-weighted cluster -- [x] Sub-task 2: Fee reduction with EB-weighted cluster -- [x] Sub-task 3: Fee change boundary accounting - ---- - -### [TEST-11] Network fee update impact on active clusters -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests verifying that `updateNetworkFee` changes the actual burn rate for existing active clusters. - -**Context:** -DAO parameter tests verify storage changes but not enforcement on active clusters. - -**Acceptance Criteria:** -- [x] Test: Increase ETH network fee with active ETH cluster → verify cluster burns faster -- [x] Test: Decrease ETH network fee → verify cluster burn rate decreases -- [x] Test: Update network fee with EB-weighted cluster → verify vUnit scaling applied - -**Agent Instructions:** -1. Read `test/unit/SSVDAO/updateNetworkFee.test.ts`. -2. Create cluster, advance blocks, check balance, then update network fee, advance more blocks, check balance again. -3. Verify the balance difference in each period matches the respective fee rates. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Network fee increase enforcement -- [x] Sub-task 2: Network fee decrease enforcement -- [x] Sub-task 3: Network fee with EB scaling - ---- - -### [TEST-12] Multi-staker reward fairness -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add comprehensive multi-staker scenarios testing proportional reward distribution and cSSV transfer settlement. - -**Context:** -`onCSSVTransfer` has only 2 tests. Staking integration tests have basic proportional distribution but don't test complex scenarios with multiple stakers entering/exiting at different times or transferring cSSV. - -**Acceptance Criteria:** -- [x] Test: 3 stakers with different amounts → each receives exactly proportional rewards -- [x] Test: Staker A stakes, rewards accrue, staker B stakes → A gets both periods, B gets only second -- [x] Test: cSSV transfer from A to B → verify reward settlement for both, B earns at higher rate -- [x] Test: Sequential cSSV transfers A→B→C → verify accumulated rewards at each step - -**Agent Instructions:** -1. Read `test/unit/SSVStaking/claimEthRewards.test.ts` and `test/unit/SSVStaking/onCSSVTransfer.test.ts`. -2. Read `test/integration/SSVNetwork/staking.test.ts` for integration patterns. -3. Use the `accEthPerShare` formula: `pendingReward = cSSVBalance * (accEthPerShare - userIndex) / 1e18`. -4. Calculate expected rewards independently and assert exact values (accounting for precision loss). -5. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Three-staker proportional distribution -- [x] Sub-task 2: Time-weighted staking (A early, B late) -- [x] Sub-task 3: cSSV transfer settlement -- [x] Sub-task 4: Sequential cSSV transfer chain - ---- - -### [TEST-13] Liquidation + reactivation multi-cycle accounting -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests for multiple liquidation/reactivation cycles to verify no accounting drift accumulates. - -**Context:** -Only single liquidation/reactivation cycles are tested. Over multiple cycles, rounding errors or state leakage could accumulate. - -**Acceptance Criteria:** -- [x] Test: Liquidate → reactivate → operate → liquidate → reactivate → verify cumulative balances, no drift -- [x] Test: Operator earnings across multiple liquidation cycles → verify no double-counting - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/liquidate.test.ts` and `test/unit/SSVClusters/reactivate.test.ts`. -2. Create a test that performs 3+ full cycles: deposit → advance blocks → liquidate → reactivate with deposit → repeat. -3. Track operator earnings and cluster balance at each step, verify consistency. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Multi-cycle liquidation/reactivation accounting -- [x] Sub-task 2: Operator earnings across cycles - ---- - -### [TEST-14] Reactivation with EB deviation solvency check -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Test that reactivation solvency checks account for EB-weighted burn rate. - -**Context:** -Reactivate tests don't verify that the minimum deposit scales with vUnits. A cluster with EB=2048 has 64x the burn rate and should require a proportionally higher deposit. - -**Acceptance Criteria:** -- [x] Test: Reactivate cluster with EB=64 → verify minimum deposit requirement scales with 2x vUnits -- [x] Test: Reactivate with EB=2048 → verify high deposit requirement enforced - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/reactivate.test.ts`. -2. Create clusters with different EBs, liquidate them, then try to reactivate with minimal deposits. -3. Verify that insufficient deposits for high-EB clusters revert. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Reactivation solvency with EB=64 -- [x] Sub-task 2: Reactivation solvency with EB=2048 - ---- - -### [TEST-15] ~~SSV cluster operations completeness~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Closed -- **Owner:** (resolved) -- **Timeline:** 2026-03-12 -- **Github Link:** (empty) - -**Requirement:** -Add comprehensive tests for SSV-denominated cluster operations. Most tests focus on ETH clusters, leaving SSV cluster paths undertested. - -**Context:** -The dual cluster system maintains parallel SSV and ETH records. SSV cluster operations should still work correctly during the transition period. - -**Resolution:** -Closed with focused legacy SSV accounting coverage across allowed SSV-cluster paths: -- `test/unit/SSVValidator/removeValidator.test.ts` already covers removal from active legacy SSV clusters, including a non-zero-fee balance-deduction check. -- `test/unit/SSVClusters/legacySSVAccounting.test.ts` adds exact settlement checks for: - - `removeValidator` with accrued legacy SSV operator fees - - `removeValidator` with a pending ETH fee change request — proves SSV settlement is isolated from ETH fee state - - `bulkRemoveValidator` with non-zero legacy SSV network fee -- Full verification run: `just test-unit` → `662 passing`. - -The previous "SSV cluster withdrawal" acceptance item was stale relative to the current code/spec. Direct `withdraw()` on an SSV cluster is intentionally blocked and is already covered by `test/unit/SSVClusters/withdraw.test.ts` expecting `IncorrectClusterVersion`. - -**Acceptance Criteria:** -- [x] Test: Register/remove validators in SSV cluster with non-zero SSV fees → verify fee deductions -- [x] Test: SSV cluster with non-zero network fee → verify fee deductions -- [x] Direct SSV cluster `withdraw()` is confirmed spec-blocked and covered as `IncorrectClusterVersion`; no positive-path withdraw test is required - -**Agent Instructions:** -1. Read existing SSV-related tests: `test/unit/SSVClusters/liquidateSSV.test.ts`, `test/integration/SSVNetwork/legacy-ssv.test.ts`. -2. Create tests that operate entirely in the SSV version (VERSION_SSV = 0). -3. Set non-zero SSV fees on operators before creating clusters. -4. Verify SSV token balance changes match expected fee deductions. -5. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Legacy SSV validator removal path with fees -- [x] Sub-task 2: SSV cluster network fee deductions -- [x] Sub-task 3: Confirm direct SSV cluster withdrawal is intentionally blocked by spec/code - ---- - -### [TEST-16] View function coverage (SSVViews) -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Fixed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add dedicated unit tests for SSVViews functions. Currently view functions are tested only indirectly. - -**Context:** -No dedicated unit test file exists for SSVViews. Functions like `getBalance`, `isLiquidatable`, `getBurnRate`, `getOperatorEarnings` are used as helpers in other tests but their correctness is never directly asserted. - -**Acceptance Criteria:** -- [x] Test: `getBalance` / `getEffectiveBalance` return correct values for active ETH clusters -- [x] Test: liquidated cluster view behavior is validated (`isLiquidated` true; `getBalance` / `getEffectiveBalance` revert) -- [x] Test: `isLiquidatable` at exact boundary returns correct boolean -- [x] Test: `getBurnRate` with EB-weighted cluster scales with vUnits -- [x] Test: `getOperatorEarnings` dual-version behavior is validated in ETH-only state (`ETH > 0`, `SSV == 0`) -- [x] Test: ETH-only (migration-equivalent) views return expected split (`SSV` views return 0, `ETH` views return correct values) - -**Agent Instructions:** -1. Read `contracts/modules/SSVViews.sol` to understand all view functions. -2. Create `test/unit/SSVViews/views.test.ts` (or similar) following existing test patterns. -3. Set up various cluster states (active, liquidated, migrated) and verify view function return values. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: `getBalance` basic and edge cases -- [x] Sub-task 2: `isLiquidatable` boundary tests -- [x] Sub-task 3: `getBurnRate` with EB -- [x] Sub-task 4: `getOperatorEarnings` dual-version -- [x] Sub-task 5: View functions after migration - ---- - -### [TEST-17] Staking rewards from EB-weighted cluster fees -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** Closed -- **Owner:** (unassigned) -- **Timeline:** 2026-03-02 -- **Github Link:** (empty) - -**Requirement:** -Test that EB-weighted clusters produce proportionally more staking rewards via the network fee. - -**Context:** -Staking integration tests use basic network fees but don't verify that higher-EB clusters contribute proportionally more to the staking pool. - -**Acceptance Criteria:** -- [x] Test: Cluster with EB=64 generates 2x network fees vs EB=32 → verify staking pool receives 2x rewards -- [x] Test: Multiple clusters with different EBs → verify cumulative staking rewards match sum of EB-weighted network fees - -**Agent Instructions:** -1. Read `test/integration/SSVNetwork/staking.test.ts`. -2. Create two clusters with different EBs, advance blocks, sync fees, verify `accEthPerShare` increment matches EB-weighted expectation. -3. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: EB=64 vs EB=32 staking reward comparison -- [x] Sub-task 2: Multi-cluster cumulative staking rewards - ---- - -### [TEST-18] `withdrawNetworkETHEarnings` (DAO ETH withdrawal) -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add unit tests for DAO ETH earnings withdrawal. Only SSV DAO withdrawal (`withdrawNetworkSSVEarnings`) is currently tested. - -**Context:** -There is no test for `withdrawNetworkETHEarnings`. The function should exist for withdrawing accumulated ETH network fees. - -**Acceptance Criteria:** -- [ ] Test: Withdraw ETH network earnings → verify balance, event, access control -- [ ] Test: Withdraw more than available → verify revert -- [ ] Test: Withdraw after multiple clusters accrue fees → verify cumulative amount - -**Agent Instructions:** -1. Read `test/unit/SSVDAO/withdrawNetworkSSVEarnings.test.ts` for the SSV withdrawal pattern. -2. Search for `withdrawNetworkETHEarnings` or similar function in `contracts/modules/SSVDAO.sol`. -3. Create equivalent tests for the ETH version. -4. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Basic ETH withdrawal test -- [ ] Sub-task 2: Over-withdrawal revert test -- [ ] Sub-task 3: Cumulative multi-cluster accrual test - ---- - -### [TEST-19] Operator removal impact on active ETH clusters -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Complete -- **Owner:** (unassigned) -- **Timeline:** 2026-02-26 -- **Github Link:** (empty) - -**Requirement:** -Test the impact of operator removal on active ETH clusters' fee calculations. - -**Context:** -`removeOperator` tests don't test the downstream effect on active ETH clusters' fee calculations. - -**Acceptance Criteria:** -- [x] Test: Remove operator from set of 4 while cluster has active validators → verify fee calculation excludes removed operator -- [x] Test: Verify removed operator stops earning from both ETH and SSV clusters - -**Resolution:** -- Added `/Users/venimir/Desktop/ssv/contracts-latest/ssv-network/test/unit/SSVClusters/removedOperatorImpact.test.ts` with coverage for: - - ETH cluster settlement after removed-operator simulation (fee deduction excludes removed operator; removed operator ETH earnings frozen) - - SSV cluster settlement via `liquidateSSV` (removed operator SSV earnings frozen while active operators continue earning) -- Aligned `/Users/venimir/Desktop/ssv/contracts-latest/ssv-network/contracts/test/harness/SSVClustersHarness.sol` `mockRemoveOperator()` with real `removeOperator` reset semantics (preserve snapshot indices, clear blocks/balances/fees/counts) so downstream accounting tests model production behavior. -- Verified with `npx hardhat test test/unit/SSVClusters/removedOperatorImpact.test.ts` and `npm run test:unit` (`405 passing`). - -**Agent Instructions:** -1. Read `test/unit/SSVOperators/removeOperator.test.ts`. -2. Read `test/sanity/removed-operator.test.ts` for the existing removed operator scenario. -3. Create a cluster with 4 operators, remove one, advance blocks, verify cluster balance only decreases by 3 operators' fees. -4. Verify the removed operator's earnings are frozen (no new earnings after removal). -5. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Fee calculation after operator removal -- [x] Sub-task 2: Removed operator earnings freeze - ---- - -### [TEST-19a] Operator removal impact on active ETH clusters -1. Multiple Removed Operators -// Missing test: -it("handles multiple removed operators (2 of 4) correctly", async () => { - // Remove operators[1] and operators[3] - // Verify only operators[0] and operators[2] accrue earnings - // Verify cluster balance reflects 2 operators only -}); -2. EB-Weighted Cluster with Removed Operator -// Missing test: -it("excludes removed operator vUnits from EB-weighted fee calculation", async () => { - // Set cluster EB to 64 ETH (2x vUnits) - // Remove one operator - // Verify active operators earn fees scaled by 2x vUnits - // Verify removed operator's vUnits are excluded -}); -3. Reactivation with Removed Operator -// Missing test: -it("reactivation excludes removed operator from fee calculation", async () => { - // Create cluster with 4 operators - // Remove operator[2] - // Liquidate cluster - // Reactivate cluster (FLOWS.md notes this skips removed operators) - // Verify reactivation fee calculation uses 3 operators only -}); -4. Operator Removal During Validator Lifecycle -// Missing test: -it("handles operator removal between register and remove validator", async () => { - // Register 2 validators with 4 operators - // Advance 100 blocks - // Remove operator[1] - // Advance 100 blocks - // Remove 1 validator - // Verify fees split correctly across 2 periods -}); -5. All Operators Removed -// Missing test: -it("handles cluster with all operators removed", async () => { - // Remove all 4 operators one by one - // Attempt cluster operations - // Verify correct reverts or handling -}); -6. Network Fee Impact -// Missing test: -it("network fees continue accruing after operator removal", async () => { - // Don't zero network fee - // Remove operator - // Verify cluster balance includes network fees + (3 operator fees) - // Verify DAO balance increases correctly -}); -7. Removed Operator Fee Withdrawal -// Missing test: -it("removed operator can withdraw frozen earnings", async () => { - // Accrue earnings for operator - // Remove operator - // Verify operator can still withdraw frozen balance - // Verify no new earnings after withdrawal -}); - ---- - - -### [TEST-20] ~~Cooldown duration changes affecting pending requests~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Closed -- **Owner:** (resolved) -- **Timeline:** 2026-03-03 -- **Github Link:** (empty) - -**Requirement:** -Test how changes to `cooldownDuration` affect pending unstake withdrawal requests. - -**Context:** -`updateUnstakeCooldownDuration` is tested for storage but not for impact on existing pending requests. - -**Resolution:** -Added direct coverage for cooldown-change behavior on existing pending unstake requests in staking unit tests: -- cooldown reduction after request creation does not unlock existing request early -- cooldown increase after request creation preserves original unlock time - -This matches the `test(staking): cover cooldown updates on pending unstake requests` change and validates that `unlockTime` is fixed at request creation. - -**Resolution:** -Added direct coverage in `test/unit/SSVStaking/withdrawUnlocked.test.ts` under `describe("Cooldown duration changes and existing pending requests")`: -- `Does not unlock an existing request earlier when cooldown is reduced after request creation` -- `Keeps original unlock time for existing request when cooldown is increased after request creation` - -Both tests create a pending unstake request first, then update cooldown via the staking harness (`mockSetCooldownDuration`) to simulate DAO-config changes. They verify previously stored `unlockTime` remains unchanged and withdrawal eligibility still follows the original request timestamp. -Validation run: `npx hardhat test test/unit/SSVStaking/withdrawUnlocked.test.ts` (13 passing). - -**Resolution:** -Added direct coverage for cooldown-change behavior on existing pending unstake requests in staking unit tests: -- cooldown reduction after request creation does not unlock existing request early -- cooldown increase after request creation preserves original unlock time - -This matches the `test(staking): cover cooldown updates on pending unstake requests` change and validates that `unlockTime` is fixed at request creation. - -**Acceptance Criteria:** -- [x] Test: User requests unstake, DAO reduces cooldown → can user withdraw earlier? -- [x] Test: User requests unstake, DAO increases cooldown → does user's original unlock time hold? - -**Agent Instructions:** -1. Read `test/unit/SSVStaking/requestUnstake.test.ts` and `test/unit/SSVStaking/withdrawUnlocked.test.ts`. -2. Read `contracts/modules/SSVStaking.sol` to understand how `unlockTime` is stored (is it absolute timestamp or relative?). -3. Create tests: stake → request unstake → change cooldown → attempt withdraw → verify behavior. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Cooldown reduction — earlier withdrawal test -- [x] Sub-task 2: Cooldown increase — original unlock time test - ---- - -### [TEST-21] ~~EB boundary values (min/max per validator)~~ -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Add boundary tests for EB values at minimum (32 ETH) and maximum (2048 ETH) per validator. - -**Context:** -Limited boundary testing exists. The sanity tests cover conversions but not the full cluster accounting at boundaries. - -**Resolution:** -All three boundary cases are covered in `test/unit/SSVClusters/updateClusterBalance.test.ts`: -- EB=32 baseline (10000 vUnits): pre-existing test "Updates cluster balance when proof is valid" -- EB=2049 revert: pre-existing test "Is reverted with 'EBExceedsMaximum' when effective balance exceeds 2048 ETH per validator" -- EB=2048 max (640000 vUnits): new test with full vUnit/deviation/DAO accounting assertions -- EB=4096 max for 2-validator cluster (1,280,000 vUnits): new test with per-operator deviation assertions -- EB=4097 revert for 2-validator cluster: new multi-validator max-exceeded test - -**Acceptance Criteria:** -- [x] Test: EB exactly 32 ETH per validator (10000 vUnits) — baseline behavior -- [x] Test: EB exactly 2048 ETH per validator (640000 vUnits) — max behavior -- [x] Test: EB at 2049 per validator — verify revert - -#### Sub-items: -- [x] Sub-task 1: EB=32 baseline test -- [x] Sub-task 2: EB=2048 maximum test -- [x] Sub-task 3: EB>2048 revert test - ---- - -### [TEST-22] ~~Dust/precision edge cases~~ -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add precision edge case tests for packed type boundaries and tiny values. - -**Acceptance Criteria:** -- [x] Test: Withdraw amount of exactly 1 * ETH_DEDUCTED_DIGITS (minimum non-zero) -- [x] Test: Cluster balance that rounds to 0 after fee deduction -- [x] Test: Operator earnings of exactly 1 packed unit — verify withdrawable -- [x] Test: accEthPerShare with tiny fee and large totalStaked — verify no rounding to zero - -**Resolution:** -4 tests added across 3 files (416 total, all passing): -- `test/unit/SSVOperators/withdrawOperatorEarnings.test.ts` — "Withdraws exactly 1 * ETH_DEDUCTED_DIGITS (minimum non-zero precision unit) and zeroes balance" (covers criteria 1 & 3) -- `test/unit/SSVClusters/withdraw.test.ts` — "Cluster balance becomes 0 when accumulated fees exceed the remaining balance (no underflow)" (criteria 2) -- `test/unit/SSVStaking/syncFees.test.ts` — "Produces non-zero accEthPerShare update with minimum possible fee (1 packed unit) and standard stake" (criteria 4; verifies `accDelta = 10_000 > 0` for `newFees = 1` packed unit with `STAKE_AMOUNT = 10 ETH`) - -**Agent Instructions:** -1. Read `test/unit/packedLib.test.ts` for packed type patterns. -2. Create edge case tests using minimum possible values. -3. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Minimum withdrawal amount -- [x] Sub-task 2: Zero-rounding cluster balance -- [x] Sub-task 3: Minimum operator earnings -- [x] Sub-task 4: Precision in accEthPerShare - ---- - -### [TEST-23] Max operator count (13) with EB -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests for 13-operator clusters with high EB values to verify no overflow. - -**Acceptance Criteria:** -- [x] Test: 13 operators with EB=2048 — verify no overflow, correct accounting -- [x] Test: Liquidation with 13 operators and high EB — verify threshold calculation - -**Agent Instructions:** -1. Read existing gas tests for 13 operators in `test/unit/SSVValidator/`. -2. Create tests combining 13 operators with maximum EB. -3. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: 13 operators + EB=2048 accounting -- [x] Sub-task 2: 13 operators + high EB liquidation - -**Resolution:** -Two tests added to `test/unit/SSVClusters/updateClusterBalance.test.ts`: -1. **"Updates vUnit accounting correctly for 13 operators at maximum EB (2048 ETH per validator)"** — registers a cluster with 13 operators, updates EB to 2048, verifies: clusterVUnits = 640,000; daoTotalEthVUnits = 640,000; each operator deviation = 630,000; each operator effective vUnits = 640,000. No overflow. -2. **"Auto-liquidates cluster with 13 operators when EB increase to maximum makes it insolvent"** — verifies that the liquidation threshold calculation with 13 operators at EB=2048 (vUnits=640,000) correctly triggers auto-liquidation inside `updateClusterBalance`. Deposit is solvent at EB=32 (threshold ≈ 0.000014 ETH) but insolvent at EB=2048 (threshold ≈ 0.000896 ETH). After auto-liquidation, all 13 operator vUnit deviations are cleaned up to 0. - ---- - -### [TEST-24] Idempotency and double-operation checks -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests verifying that double-calling operations either reverts or is safely idempotent. - -**Acceptance Criteria:** -- [x] Test: `exitValidator` twice on same validator → verify second succeeds -- [x] Test: `syncFees` twice in same block → verify no double-counting -- [x] Test: `updateClusterBalance` with same proof twice → verify stale block revert - -**Agent Instructions:** -1. Read relevant test files for each operation. -2. Call each operation twice and verify the second call either reverts with the correct error or is safely no-op. -3. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Double `exitValidator` -- [x] Sub-task 2: Double `syncFees` in same block -- [x] Sub-task 3: Double `updateClusterBalance` with same proof - -**Resolution:** -- **`exitValidator` twice** (`test/unit/SSVValidator/exitValidator.test.ts`): `exitValidator` does not mutate validator state (only emits an event after validating the stored operator hash), so calling it twice is safely idempotent — both calls succeed and emit `ValidatorExited`. Test added: "Calling exitValidator twice on the same validator succeeds both times without reverting". -- **`syncFees` twice** (`test/unit/SSVStaking/syncFees.test.ts`): After the first call, the staking pool balance is updated to match the DAO balance. The second call sees no delta (current == previous), emits no `FeesSynced` event, and leaves `accEthPerShare` unchanged. Test added: "Calling syncFees twice does not double-count fees — second call is a no-op". -- **`updateClusterBalance` same proof** (`test/unit/SSVClusters/updateClusterBalance.test.ts`): Already covered by the existing test "Is reverted with 'StaleUpdate' when blockNum is not increasing" — calling with the same (or lower) `blockNum` reverts with `StaleUpdate`. No new test needed. - ---- - -### [TEST-25] Upgrade path (reinitializer) tests -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests for the upgrade initializer (`reinitializer(3)`) behavior. - -**Acceptance Criteria:** -- [x] Test: Call initializer with `reinitializer(3)` → verify new state set correctly -- [x] Test: Call initializer again → verify reverts (already initialized) -- [x] Test: Verify `UPGRADE_TIMESTAMP` immutable prevents pre-migration fee declarations - -**Agent Instructions:** -1. Read `contracts/upgrades/stage/hoodi/SSVNetworkSSVStakingUpgrade.sol`. -2. Read `test/setup/` for how upgrades are performed in tests. -3. Create tests that upgrade the proxy and verify the initializer runs correctly, then fails on re-call. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Successful reinitializer(3) execution -- [x] Sub-task 2: Re-initialization revert -- [x] Sub-task 3: UPGRADE_TIMESTAMP fee declaration guard - -**Resolution:** -- **Sub-task 1 (state set correctly):** Already covered by `test/integration/SSVNetwork.test.ts` — "Configures SSVNetwork correctly" verifies `cooldownDuration`, `defaultOracleIds`, `quorumBps`, and all governance params post-upgrade. -- **Sub-task 2 (re-initialization revert):** Added to `test/integration/SSVNetwork.test.ts` under "Constructor, initializer and upgrades": "Calling initializeSSVStaking again reverts with already-initialized error". Attaches `SSVNetworkSSVStakingUpgrade` factory to the already-upgraded proxy and calls `initializeSSVStaking` again — reverts with OZ v4 string error `"Initializable: contract is already initialized"`. -- **Sub-task 3 (UPGRADE_TIMESTAMP guard):** Already covered by `test/unit/SSVOperators/executeOperatorFee.test.ts` — "Is reverted with 'LegacyOperatorFeeDeclarationInvalid' when executing a pre-upgrade fee declaration". Deploys SSVOperators with a future `upgradeTimestamp`, mocks a fee declaration with `approvalBeginTime <= upgradeTimestamp`, verifies `executeOperatorFee` reverts. - ---- - -### [TEST-26] Zero-validator cluster operations -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add tests for clusters with 0 validators. - -**Acceptance Criteria:** -- [x] Test: Deposit into cluster with 0 validators → verify no fees accrue -- [x] Test: Withdraw from cluster with 0 validators → verify full balance withdrawable -- [x] Test: EB update on cluster with 0 validators → verify no vUnits change -- [x] Test: Oracle EB report (`effectiveBalance = 0`) on active cluster with `validatorCount == 0` (all validators removed, cluster not deleted) → verify: (a) `_verifyEBLimits` passes (`0 >= 0 * 32`), (b) `ebToVUnits(0)` returns `0`, (c) `clusterEB.vUnits` written as `0` (resets any prior explicit EB back to implicit-EB sentinel), (d) no `operatorEthVUnits` or `daoTotalEthVUnits` changes, (e) no auto-liquidation triggered, (f) `ClusterBalanceUpdated` emitted with `effectiveBalance = 0` - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/deposit.test.ts` and `test/unit/SSVClusters/withdraw.test.ts`. -2. Create a cluster, remove all validators, then perform operations. -3. For sub-task 4: register a cluster with explicit EB (run one `updateClusterBalance` with non-zero EB first), then remove all validators, then submit a valid oracle proof with `effectiveBalance = 0`. Assert all storage fields and events per acceptance criteria above. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Deposit with 0 validators -- [x] Sub-task 2: Withdrawal with 0 validators -- [x] Sub-task 3: EB update with 0 validators (generic) -- [x] Sub-task 4: Oracle EB report with `effectiveBalance = 0` on active zero-validator cluster — full state assertion (see DISC.md §2.2) - -**Resolution:** -- **Sub-task 1** (`test/unit/SSVClusters/deposit.test.ts`): "Deposit into zero-validator cluster accrues no fees over elapsed blocks" — uses non-zero operator fee fixture, registers then removes the only validator, mines 100 blocks, deposits, verifies balance = removal_balance + deposit_amount exactly (no fee deduction since vUnits = 0). -- **Sub-task 2** (`test/unit/SSVClusters/withdraw.test.ts`): "Zero-validator cluster allows full balance withdrawal without fee deduction" — non-zero fee + network fee, removes last validator, mines 100 blocks, withdraws full balance, verifies cluster balance = 0 and cluster still active. -- **Sub-task 3** (`test/unit/SSVClusters/updateClusterBalance.test.ts`): "EB update with effectiveBalance = 0 on zero-validator cluster succeeds without modifying vUnit state" — basic case (no prior explicit EB), verifies ClusterBalanceUpdated emitted with effectiveBalance = 0, clusterVUnits = 0, no vUnit changes. -- **Sub-task 4** (`test/unit/SSVClusters/updateClusterBalance.test.ts`): "Oracle EB report effectiveBalance = 0 on active zero-validator cluster resets explicit EB to implicit-EB sentinel" — full state assertion: first sets EB = 64 ETH (explicit vUnits = 20000), removes last validator (vUnits cleared to 0), then submits effectiveBalance = 0 via updateClusterBalance; verifies all (a)-(f): limits pass, vUnits = 0, operatorEthVUnits = 0, daoTotalEthVUnits unchanged, no auto-liquidation, ClusterBalanceUpdated emitted with effectiveBalance = 0, cluster still active. - ---- - -### [TEST-27] Operator at max validator limit -- **Type:** Unit Test Completeness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Test `VALIDATORS_PER_OPERATOR_LIMIT` (3000) boundary. - -**Acceptance Criteria:** -- [x] Test: Register validator pushing operator to limit+1 → verify revert -- [x] Test: Remove validator then re-register at limit → verify succeeds - -**Resolution:** -Added two tests to `test/unit/SSVValidator/registerValidator.test.ts`: -- Used `mockValidatorsPerOperatorLimit(5)` to avoid bulk-registering 3000 validators -- Used `bulkRegisterValidator` to fill all operators to the limit (5 validators) -- Sub-task 1: 6th `registerValidator` call reverts with `ExceedValidatorLimitWithData(operatorIds[0])` -- Sub-task 2: After removing one validator (back to 4), re-register succeeds and emits `ValidatorAdded` - -#### Sub-items: -- [x] Sub-task 1: Exceed operator validator limit — revert -- [x] Sub-task 2: Re-register at limit after removal - ---- - -### [TEST-28] Uncomment SSV reentrancy test assertions -- **Type:** Unit Test Completeness -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Uncomment the three commented-out assertions in the SSV operator reentrancy test and verify they pass. - -**Context:** -In `test/unit/SSVOperators/reentrancy.test.ts:101-107`, three assertions are commented out inside `/* */`. The SSV token reentrancy guard is effectively untested. The ETH reentrancy test in the same file IS properly asserted. This means the SSV withdrawal path has no verified reentrancy protection. - -**Acceptance Criteria:** -- [ ] Lines 101-107 uncommented -- [ ] All three assertions pass -- [ ] If assertions fail, fix the mock contract or reentrancy guard to make them pass - -**Agent Instructions:** -1. Read `test/unit/SSVOperators/reentrancy.test.ts`, focus on lines 95-110. -2. Uncomment the three assertions at lines 101-107. -3. Run `npm run test:unit` to verify they pass. -4. If they fail, investigate whether the mock reentrancy contract or the reentrancy guard needs fixing. - -#### Sub-items: -- [ ] Sub-task 1: Uncomment SSV reentrancy assertions -- [ ] Sub-task 2: Verify test passes (fix if needed) - ---- - -### [TEST-29] ~~Add contract ETH balance delta assertions to deposit tests~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** 2026-02-26 -- **Github Link:** (empty) - -**Requirement:** -Add `address(contract).balance` before/after assertions to ETH deposit tests. Currently tests verify cluster balance in events but never check the actual contract ETH balance change. - -**Context:** -In `test/unit/SSVClusters/deposit.test.ts`, tests verify cluster balance in events but never check `address(contract).balance` before and after the deposit. This means the contract could emit the correct event but not actually receive the ETH. - -**Concrete test:** Register with 10 ETH, deposit 5 ETH, assert `contractBalance_after - contractBalance_before == 5 ETH`. - -**Resolution:** -Added explicit `address(clusters).balance` delta assertions in `test/unit/SSVClusters/deposit.test.ts` for a single deposit and for a multi-deposit ("bulk" sequential deposits) scenario. The multi-deposit test asserts per-deposit deltas and cumulative ETH balance growth across two deposits (owner + third-party depositor). Validation run: `npx hardhat test test/unit/SSVClusters/deposit.test.ts` (6 passing) and `npm run test:unit` (414 passing). - -**Acceptance Criteria:** -- [x] At least one deposit test captures contract ETH balance before and after -- [x] Asserts `balanceAfter - balanceBefore == msg.value` -- [x] Both single and bulk deposit scenarios covered - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/deposit.test.ts` for existing patterns. -2. Add balance capture: `const before = await ethers.provider.getBalance(ssvNetwork.address)`. -3. After deposit: `const after = await ethers.provider.getBalance(ssvNetwork.address)`. -4. Assert: `expect(after - before).to.equal(depositAmount)`. -5. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Add ETH balance delta assertion to deposit test -- [x] Sub-task 2: Run full test suite - ---- - -### [TEST-30] Resolve TODO comments with deferred assertions -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Resolve the 12 TODO comments across test files that indicate event args not verified against computed expected values. - -**Context:** -In `test/unit/SSVValidator/registerValidator.test.ts:56`, `bulkRegisterValidator.test.ts:58`, and 10 other locations, TODO comments indicate that event arguments are not being verified against independently computed expected values. These represent deferred test assertions that should be completed. - -**Acceptance Criteria:** -- [ ] All 12 TODO comments identified and resolved -- [ ] Each TODO replaced with actual assertion or removed with justification -- [ ] No new test failures introduced - -**Agent Instructions:** -1. Grep for `TODO` across all test files to identify the 12 locations. -2. For each TODO: read the surrounding test context, compute the expected value, add the assertion. -3. Run `npm run test:unit` after each batch of changes. - -#### Sub-items: -- [ ] Sub-task 1: Identify all 12 TODO locations -- [ ] Sub-task 2: Resolve each TODO with actual assertions -- [ ] Sub-task 3: Run full test suite - ---- - -### [TEST-31] Expand onCSSVTransfer test coverage -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Expand `onCSSVTransfer` tests from the current 2 tests to cover multi-transfer sequences, transfers after fee accruals, and transfers between users with pending rewards. - -**Context:** -In `test/unit/SSVStaking/onCSSVTransfer.test.ts`, only 2 tests exist. Missing scenarios: multi-transfer sequences, transfer after fee accruals, transfer between users with pending rewards. The `onCSSVTransfer` hook is critical for correct reward settlement during cSSV transfers. - -**Concrete test:** User A (100 cSSV) transfers 50 to User B (200 cSSV) after fee sync. Verify both parties' rewards settled correctly using `pendingReward = cSSVBalance * (accEthPerShare - userIndex) / 1e18`. - -**Acceptance Criteria:** -- [ ] Test: multi-transfer sequence (A→B→C) with reward verification at each step -- [ ] Test: transfer after fee accruals — verify accumulated rewards settled before transfer -- [ ] Test: transfer between users with pending rewards — verify both rewards correct -- [ ] At least 5 total test cases for `onCSSVTransfer` - -**Agent Instructions:** -1. Read `test/unit/SSVStaking/onCSSVTransfer.test.ts` for existing patterns. -2. Read `contracts/modules/SSVStaking.sol`, focus on `onCSSVTransfer` (line 169). -3. Add multi-transfer, fee-accrual, and pending-reward test scenarios. -4. Calculate expected rewards independently using the accumulator formula. -5. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Multi-transfer sequence test -- [ ] Sub-task 2: Transfer after fee accrual test -- [ ] Sub-task 3: Transfer with pending rewards test - ---- - -### [TEST-32] Add access control tests for DAO governance functions -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Complete -- **Owner:** (unassigned) -- **Timeline:** 2026-02-26 -- **Github Link:** (empty) - -**Requirement:** -Add non-owner revert tests for all DAO governance functions. Currently all SSVDAO test files only test happy path from owner. - -**Context:** -All 11+ governance functions (`updateNetworkFee`, `updateLiquidationThresholdPeriod`, `replaceOracle`, `updateQuorumBps`, `updateUnstakeCooldownDuration`, `updateMaximumOperatorFee`, `updateMinimumOperatorEthFee`, etc.) are tested only from the owner account. No test verifies that non-owner calls are rejected. - -**Acceptance Criteria:** -- [x] Each governance function has a test calling from non-owner that expects revert -- [x] Revert reason matches expected access control error (legacy branch behavior: `Ownable: caller is not the owner`) -- [x] All 11+ functions covered - -**Resolution:** -- Added `/Users/venimir/Desktop/ssv/contracts-latest/ssv-network/test/unit/SSVDAO/accessControl.test.ts` with non-owner access-control tests for 15 owner-only DAO governance wrappers on `SSVNetwork`: - - `updateNetworkFee`, `updateNetworkFeeSSV`, `withdrawNetworkSSVEarnings` - - `updateOperatorFeeIncreaseLimit`, `updateDeclareOperatorFeePeriod`, `updateExecuteOperatorFeePeriod` - - `updateLiquidationThresholdPeriod`, `updateLiquidationThresholdPeriodSSV` - - `updateMinimumLiquidationCollateral`, `updateMinimumLiquidationCollateralSSV` - - `updateMaximumOperatorFee`, `updateMinimumOperatorEthFee` - - `updateUnstakeCooldownDuration`, `replaceOracle`, `updateQuorumBps` -- Verified non-owner calls revert with the legacy Ownable string on this branch (`Ownable: caller is not the owner`), rather than OZ's newer `OwnableUnauthorizedAccount` custom error. -- Verified with `npx hardhat test test/unit/SSVDAO/accessControl.test.ts` and `npm run test:unit` (`428 passing`). - -**Agent Instructions:** -1. Read `test/unit/SSVDAO/` directory for all existing DAO test files. -2. For each governance function, add a test that calls from a non-owner signer. -3. Assert revert with the expected access control error. -4. Run `npm run test:unit`. - -#### Sub-items: -- [x] Sub-task 1: Identify all governance functions requiring access control tests -- [x] Sub-task 2: Add non-owner revert test for each function -- [x] Sub-task 3: Run full test suite - ---- - -### [TEST-33] Mainnet governance config validation & edge-case tests -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add a dedicated test suite that uses the exact mainnet governance parameters and validates system behavior at the boundaries implied by those values. This ensures the production config is safe before deployment. - -**Mainnet Config (from deployment spreadsheet):** -| Param | Value | Wei/Raw | -|-------|-------|---------| -| ethNetworkFee | 0.000000003550929823 ETH/block | 3,550,929,823 | -| minimumLiquidationCollateral | 0.00094 ETH | 940,000,000,000 | -| minimumBlocksBeforeLiquidation | ~5 days | 35,800 | -| operatorMinFee | 0.000000001065278947 ETH/block | 1,065,278,947 | -| operatorMaxFee | 0.000000005326394735 ETH/block | 5,326,394,735 | -| defaultOperatorETHFee | 0.000000001775464912 ETH/block | 1,775,464,912 | -| quorumBps | 75% | 7,500 | -| cooldownDuration | 7 days | 50,120 | - -**Test scenarios:** -1. **Packability** — verify all fee values survive pack/unpack round-trip without precision loss (divisible by `ETH_DEDUCTED_DIGITS`). If a value isn't packable, document the closest packable equivalent. -2. **Liquidation threshold math** — with 4 operators at defaultOperatorETHFee + ethNetworkFee, calculate exactly how many blocks / how much balance keeps a cluster solvent vs liquidatable. Verify `isLiquidatable` agrees. -3. **Operator fee boundaries** — declare fees at operatorMinFee and operatorMaxFee, verify both accepted. Declare fee at operatorMinFee-1 and operatorMaxFee+1, verify both rejected. -4. **Cluster burn rate** — with mainnet fees and varying validator counts (1, 4, 13), compute expected burn rate per block. Verify `getBalance` returns correct remaining balance after N blocks. -5. **Cooldown duration** — set cooldownDuration to 50,120. Request unstake, verify cannot claim before 50,120 blocks/seconds elapse, can claim after. (Also clarifies the blocks-vs-seconds question from BUG-8.) -6. **Quorum** — with 4 oracles and quorumBps=7500, verify exactly 3 votes are needed to commit a root. 2 votes should fail, 3 should succeed. -7. **Liquidation collateral** — deposit exactly minimumLiquidationCollateral, verify cluster is NOT liquidatable at block 0. Verify it IS liquidatable after enough blocks to exhaust balance below threshold. -8. **Long-running clusters** — with mainnet fees, simulate a cluster running for 1 year (~2,628,000 blocks). Verify no overflow in fee index calculations and balance accounting remains correct. - -**Acceptance Criteria:** -- [ ] Test file `test/unit/mainnet-config-validation.test.ts` (or similar) created -- [ ] All 8 test scenarios above implemented with exact mainnet values -- [ ] Each test includes numeric assertions (expected vs actual) with comments showing the math -- [ ] All tests pass -- [ ] Any packability issues documented (values that need rounding for on-chain use) - -**Agent Instructions:** -1. Read `test/setup/fixtures.ts` and `test/common/` for test patterns and constants. -2. Create a new test file for mainnet config validation. -3. Use the exact wei values from the table above as test constants. -4. For each scenario, include a comment with the expected math (e.g., "4 operators × 1,775,464,912 wei/block × 35,800 blocks = X wei burn"). -5. For packability tests, use `SSVPackedLib` to pack/unpack each value and assert round-trip equality. -6. Run `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Create test file with mainnet config constants -- [ ] Sub-task 2: Implement packability round-trip tests -- [ ] Sub-task 3: Implement liquidation/solvency boundary tests -- [ ] Sub-task 4: Implement operator fee boundary tests -- [ ] Sub-task 5: Implement burn rate and long-running cluster tests -- [ ] Sub-task 6: Implement cooldown and quorum tests -- [ ] Sub-task 7: Run full test suite - ---- - -### [TEST-34] ~~Staking solvency invariant: cSSV supply must not exceed SSV held by staking contract~~ -- **Type:** Unit Test Completeness -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** 2026-02-26 -- **Github Link:** (empty) - -**Requirement:** -Add invariant coverage for staking solvency: `cSSV.totalSupply() <= SSV.balanceOf(SSVStaking)` at all times. - -**Product concern:** -Product asked for explicit safety validation to ensure cSSV issuance cannot exceed backing SSV even if future changes introduce bugs. Current implementation is by-construction (SSV transfer happens before cSSV mint), but the invariant should be continuously enforced by tests. - -**Context:** -`SSVStaking.stake()` transfers SSV to staking contract before minting cSSV, and `requestUnstake()` burns cSSV before eventual SSV withdrawal. This implies the solvency relationship should always hold, but there is no explicit invariant test guarding against regressions. - -**Invariant to test:** -`cSSV.totalSupply() <= SSV.balanceOf(address(SSVStaking))` - -**Resolution:** -Added explicit Echidna invariant `echidna_cssv_supply_lte_ssv_backing()` in `test/echidna/SSVStakingEchidna.sol` and deterministic regression coverage in `test/unit/SSVStaking/solvencyInvariant.test.ts` for single-user ordering, multi-user partial unstake requests, and full unstake/withdraw flows. Also aligned the Echidna harness `MAX_PENDING_REQUESTS` constant with `SSVStaking` (`2000`) to avoid a harness-only false failure in `echidna_pending_requests_bounded`. Validation run: `npx hardhat test test/unit/SSVStaking/solvencyInvariant.test.ts` (3 passing) and `echidna ... SSVStakingEchidna ...` (12/12 invariants passing, including solvency invariant). - -**Acceptance Criteria:** -- [x] Add an Echidna invariant test that continuously asserts `cSSV.totalSupply() <= SSV.balanceOf(address(staking))` across stake/unstake/transfer/withdraw flows -- [x] Add at least one deterministic unit regression test for the invariant around `stake` and `requestUnstake` ordering -- [x] Include edge scenarios: multiple users, partial unstake requests, full unstake + withdraw cycle -- [x] No invariant violations in fuzz runs - -**Agent Instructions:** -1. Read `contracts/modules/SSVStaking.sol` and `contracts/token/CSSVToken.sol` for mint/burn ordering. -2. Extend the Echidna suite under `test/echidna/` with a dedicated solvency invariant check. -3. Add a deterministic unit test in `test/unit/SSVStaking/` asserting the invariant before/after `stake`, `requestUnstake`, and `withdrawUnlocked`. -4. Run the relevant unit tests and Echidna target. - -#### Sub-items: -- [x] Sub-task 1: Add Echidna solvency invariant -- [x] Sub-task 2: Add deterministic unit regression tests -- [x] Sub-task 3: Cover multi-user + partial/full unstake scenarios -- [x] Sub-task 4: Run unit + Echidna checks - ---- - -## Integration / E2E Tests - -### [ITEST-1] ~~`commitRoot` → `updateClusterBalance` E2E flow~~ -- **Type:** Integration / E2E Tests -- **Priority:** P1 -- **Status:** ✅ **CLOSED** -- **Owner:** Test coverage update -- **Timeline:** Completed 2026-03-03 -- **Github Link:** [test/integration/SSVNetwork/commitRootUpdateClusterBalance.test.ts](../test/integration/SSVNetwork/commitRootUpdateClusterBalance.test.ts) - -**Requirement:** -Create an end-to-end test connecting oracle voting → root commitment → cluster EB update → fee recalculation. - -**Context:** -Unit tests for `commitRoot` and `updateClusterBalance` exist separately but no test connects the full flow. This is the core oracle→cluster pipeline. - -**Acceptance Criteria:** -- [x] Test: 3 oracles propose same root → root committed → cluster calls `updateClusterBalance` with proof from committed root → verify fees recalculated with new EB -- [x] Test: Multiple clusters update EB from same root → verify independent accounting - -**Implementation Summary:** -1. Added a dedicated integration suite: [commitRootUpdateClusterBalance.test.ts](../test/integration/SSVNetwork/commitRootUpdateClusterBalance.test.ts). -2. Added E2E test for quorum flow (`3/4` oracle votes) that commits root and executes `updateClusterBalance` with valid Merkle proof. -3. Added exact-value assertion that EB update to `64` doubles post-update operator earnings accrual vs baseline. -4. Added multi-cluster scenario from one committed root and verified independent accounting with exact formula-based balance deltas per cluster. - -**Agent Instructions:** -1. Read `test/unit/SSVDAO/commitRoot.test.ts` and `test/unit/SSVClusters/updateClusterBalance.test.ts`. -2. Read `test/integration/SSVNetwork.test.ts` for integration test patterns. -3. Create a new integration test file or add to existing. -4. Build the full flow: deploy, create cluster, stake SSV for oracle weight, commit oracle root with Merkle tree, then call `updateClusterBalance` with proof from the committed root. -5. Verify the cluster's EB is updated and fee calculations reflect the new EB. -6. Run `npm run test:integration`. - -#### Sub-items: -- [x] Sub-task 1: Full oracle → cluster EB update flow -- [x] Sub-task 2: Multiple clusters from same root - ---- - -### [ITEST-2] ~~Migration with multiple EB updates E2E~~ -- **Type:** Integration / E2E Tests -- **Priority:** P1 -- **Status:** ✅ **CLOSED** -- **Owner:** Test coverage update -- **Timeline:** Completed 2026-03-03 -- **Github Link:** [test/integration/SSVNetwork/migrationMultipleEBUpdates.test.ts](../test/integration/SSVNetwork/migrationMultipleEBUpdates.test.ts) - -**Requirement:** -Test migration of a cluster that has had multiple EB updates, verifying the latest snapshot is used. - -**Context:** -Migration with EB snapshot is tested but edge cases with multiple prior EB updates are not. - -**Acceptance Criteria:** -- [x] Test: Migrate cluster that has had multiple EB updates → verify latest snapshot used -- [x] Test: Migrate cluster where EB was set and then validators were added → verify vUnits calculated correctly - -**Implementation Summary:** -1. Added dedicated ITEST-2 suite: [migrationMultipleEBUpdates.test.ts](../test/integration/SSVNetwork/migrationMultipleEBUpdates.test.ts). -2. Added scenario for multiple pre-migration EB updates (`64 -> 96`) and verified migration uses the latest EB snapshot in `ClusterMigratedToETH`. -3. Added scenario where EB is set, validator count is increased, and EB is updated again before migration; verified migrated vUnits/effective balance are calculated from the latest post-addition snapshot. -4. Added exact-value assertions for `daoTotalEthVUnits`, per-operator vUnits, and migrated cluster state. - -**Agent Instructions:** -1. Read `test/unit/SSVClusters/migrateClusterToETH.test.ts`. -2. Create a cluster, update EB multiple times via `updateClusterBalance`, then migrate to ETH. -3. Verify the migrated cluster uses the latest EB values. -4. Run `npm run test:integration`. - -#### Sub-items: -- [x] Sub-task 1: Migration after multiple EB updates -- [x] Sub-task 2: Migration after EB set + validators added - ---- - -## Deployment & Scripts - -### [DEPLOY-1] ~~Fix `deploy-all.ts` broken signature and constructor args~~ -- **Type:** Deployment & Scripts -- **Priority:** P0 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** [PR #431](https://github.com/ssvlabs/ssv-network/pull/431) - -**Requirement:** -Fix deployment scripts so that fresh deployments work. `deploy-all.ts` had wrong `initializeSSVStaking` signature and missing constructor args for 3 modules. - -**Context:** -`scripts/deploy-all.ts` (now deleted) used `"initializeSSVStaking(address,uint64)"` with `[cssvTokenAddr, cooldown]`. Actual contract signature is `initializeSSVStaking(uint64,uint32[4],uint16)`. Also, `SSVDAO`, `SSVViews`, `SSVStaking` all require `_cssv` address as constructor arg but were deployed without args. - -**Resolution:** -`deploy-all.ts` replaced by `deploy-fresh.ts` (fresh deployments) and `upgrade.ts` (upgrades). Both use the correct `initializeSSVStaking(uint64,uint32[4],uint16)` three-parameter signature and pass `quorumBps` from config. `CSSVToken` deployed before modules and its address passed as constructor arg. `generate-safe-batch.ts` handles Safe multisig batch encoding. - -**Acceptance Criteria:** -- [x] `initializeSSVStaking` signature is `"initializeSSVStaking(uint64,uint32[4],uint16)"` -- [x] `quorumBps` passed as third argument from deployment config -- [x] `CSSVToken` deployed before modules that need its address -- [x] `SSVDAO`, `SSVViews`, `SSVStaking` deployed with `cssvTokenAddr` as constructor arg - -**Agent Instructions:** -~~Obsolete — resolved by replacing `deploy-all.ts` with `deploy-fresh.ts` and `upgrade.ts`. See Resolution above.~~ - -#### Sub-items: -- [ ] Sub-task 1: Fix `initializeSSVStaking` call signature and params -- [ ] Sub-task 2: Fix constructor args for SSVDAO, SSVViews, SSVStaking -- [ ] Sub-task 3: Reorder CSSVToken deployment before modules -- [ ] Sub-task 4: Verify script runs against local Hardhat - ---- - -### [DEPLOY-2] Verify `liquidationThresholdPeriod` config vs spec mismatch -- **Type:** Deployment & Scripts -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Resolve the mismatch between `liquidationThresholdPeriod` in `deployments/hoodi-stage/config.json` (35,800) and the DIP-X spec (50,190 blocks). - -**Context:** -`deployments/hoodi-stage/config.json` sets `liquidationThresholdPeriod: 35800` but the DIP-X spec proposes 50,190 blocks (~7 days). This is a significant difference — 35,800 blocks is ~5 days. If this is intentional for the testnet, it should be documented. The mainnet config (`deployments/mainnet/config.json`) must use the correct value. - -**Acceptance Criteria:** -- [ ] Decision documented: is 35,800 intentional for Hoodi testnet? -- [ ] Mainnet config (when created) uses 50,190 or the final DIP-X approved value -- [ ] Comment added to config explaining the discrepancy if intentional - -**Agent Instructions:** -1. Read `deployments/hoodi-stage/config.json` and `deployments/mainnet/config.json`. -2. Read `docs/SPEC.md` section 11 for the governance parameters. -3. If this is a testnet-specific value, add a comment. If it's a bug, update to 50,190. -4. This is primarily a decision item — flag it for team review if uncertain. - -#### Sub-items: -- [ ] Sub-task 1: Verify intended value with team -- [ ] Sub-task 2: Update config or add documentation - ---- - -### [DEPLOY-3] Verify `ethNetworkFee` rounding in config -- **Type:** Deployment & Scripts -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) -- **DIP-X Review Source:** ETH Payments review finding ETH-10 - -**Requirement:** -Verify whether the rounding of `ethNetworkFee` (config: 3,550,900,000 vs spec: 3,550,929,823) is acceptable or needs correction. - -**Context:** -The config rounds to 3,550,900,000 while the spec says 3,550,929,823. The difference is ~30k wei, which over millions of blocks could accumulate to meaningful amounts. - -**Additional context from DIP-X review (ETH-10):** The DIP-specified value `3,550,929,823 % 100,000 = 29,823` — it is NOT divisible by `ETH_DEDUCTED_DIGITS (100,000)`, so the exact DIP value cannot be stored in `PackedETH`. The closest packable values are `3,550,900,000` (rounding down) or `3,551,000,000` (rounding up). The DIP should be updated to note this packing constraint. The initial value is set at deployment/upgrade time (not hardcoded), so the contract itself has no validation that a specific initial value is used — this is a governance responsibility. - -**Acceptance Criteria:** -- [ ] Decision documented: acceptable rounding or needs exact value -- [ ] If exact value needed, verify it passes `MaxPrecisionExceeded` check (divisible by ETH_DEDUCTED_DIGITS = 100,000) - -**Agent Instructions:** -1. Check if 3,550,929,823 is divisible by 100,000 (ETH_DEDUCTED_DIGITS). It's not (remainder = 29,823), so it may need rounding. -2. Verify what the contract's precision check allows. -3. The closest valid value is either 3,550,900,000 or 3,551,000,000. -4. Document the decision. - -#### Sub-items: -- [ ] Sub-task 1: Verify precision constraints -- [ ] Sub-task 2: Document accepted rounding - ---- - -### [DEPLOY-4] ~~Remove unused error declarations~~ -- **Type:** Deployment & Scripts -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Resolution:** -Removed `NotAuthorized()` and `InvalidContractAddress()` from `contracts/interfaces/ISSVNetworkCore.sol`. Both were declared but never referenced anywhere in the codebase. Compilation verified clean. - -**Acceptance Criteria:** -- [x] Both unused errors removed from `ISSVNetworkCore.sol` -- [x] No references to these errors exist in any contract -- [x] Compilation succeeds - -#### Sub-items: -- [x] Sub-task 1: Verify errors are unused -- [x] Sub-task 2: Remove declarations -- [x] Sub-task 3: Verify compilation - ---- - -### [DEPLOY-5] ~~Document `operatorMinFee` governance parameter in DIP-X~~ -- **Type:** Deployment & Scripts -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) -- **DIP-X Review Source:** ETH Payments review finding ETH-20 - -**Resolution:** -Updated `docs/SPEC.md` governance parameter table with initial values sourced from `deployments/hoodi-prod/config.json`: -- `minimumOperatorEthFee`: 0.000000001065200000 ETH/block (~0.0028 ETH/year), setter `updateMinimumOperatorEthFee(uint256)` -- `operatorMaxFee` (also TBD): 0.000000005326300000 ETH/block (~0.0140 ETH/year), setter `updateMaximumOperatorFee(uint256)` - -**Acceptance Criteria:** -- [x] DIP-X governance table updated with: update function = `updateMinimumOperatorEthFee(uint256 minFee)`, initial value from config -- [x] Deployment config (`deployments/hoodi-prod/config.json`) verified to include a reasonable initial value - -#### Sub-items: -- [x] Sub-task 1: Document `operatorMinFee` in DIP-X governance table -- [x] Sub-task 2: Verify deployment config includes the parameter - ---- - -### [DEPLOY-6] ~~DIP-X unstaking description doesn't match implementation~~ -- **Type:** Deployment & Scripts -- **Priority:** P2 -- **Status:** ✅ Closed (already correct in SPEC.md and FLOWS.md) -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) -- **DIP-X Review Source:** SSV Staking review finding DIP-7 - -**Resolution:** -Verified `docs/SPEC.md` and `docs/FLOWS.md` already correctly describe the burn-first mechanism. `SPEC.md §3 "Unstaking (Two-Step)"` states: *"`requestUnstake(amount)`: Burns cSSV, creates `UnstakeRequest{amount, unlockTime}`"* — no "lock cSSV → burn later" language exists. `FLOWS.md §5.2` likewise lists burn as step 4 within the same transaction. The original concern about the DIP wording was addressed when these spec documents were authored. No code or doc change needed. - -**Acceptance Criteria:** -- [x] DIP-X unstaking section updated to describe the actual burn-first mechanism -- [x] No code change needed — the implementation is correct and simpler - -#### Sub-items: -- [x] Sub-task 1: Verify SPEC.md and FLOWS.md describe correct burn-first flow -- [x] Sub-task 2: No user-facing doc change needed — spec is authoritative - ---- - -### [DEPLOY-7] ~~Deploy scripts import from test files~~ -- **Type:** Deployment & Scripts -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Move shared constants out of test files so deploy scripts don't import from test directories. - -**Context:** -`scripts/deploy-all.ts`, `scripts/staking-upgrade.ts`, and `scripts/upgrade-fork.ts` (all now deleted/replaced) imported `DEFAULT_UNSTAKE_COOLDOWN` from `"../test/common/constants.ts"`. Deploy scripts should not depend on test files — this creates a fragile dependency where test refactors can break deployment. - -**Resolution:** -`upgrade.ts` and `deploy-fresh.ts` import all shared config from `scripts/common/config.ts` (new in this merge). No deploy script imports from `test/common/` any longer. The only remaining reference is `scripts/common/fork-test.ts` which uses a local env-var constant — not a cross-boundary import. - -**Acceptance Criteria:** -- [x] Shared constants in `scripts/common/config.ts` -- [x] Deploy scripts import from the new location -- [x] No deploy script imports from `test/common/` - -**Agent Instructions:** -~~Obsolete — resolved. `upgrade.ts` and `deploy-fresh.ts` import from `scripts/common/config.ts`. See Resolution above.~~ - -#### Sub-items: -- [ ] Sub-task 1: Create shared constants file -- [ ] Sub-task 2: Update deploy script imports -- [ ] Sub-task 3: Verify scripts still work - ---- - -## Operational Readiness - -### [OPS-1] Create mainnet deployment runbook -- **Type:** Operational Readiness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Create a step-by-step runbook for the v2.0.0 mainnet upgrade, including pre-flight checks, deployment steps, post-deployment verification, and rollback triggers. - -**Context:** -No mainnet deployment checklist exists. The upgrade involves UUPS proxy upgrades, new module deployments, CSSVToken deployment, initializer execution, and governance parameter setup. The existing `scripts/deployment.md` covers generic deployment but not the v2.0.0-specific flow. - -**Acceptance Criteria:** -- [ ] Document includes pre-flight checks (contract sizes, gas estimates, parameter verification) -- [ ] Step-by-step deployment sequence matching `upgrade.ts` / `generate-safe-batch.ts` flow -- [ ] Post-deployment verification checklist (all parameters set, quorumBps != 0, oracle addresses correct) -- [ ] Rollback triggers and procedure for each step -- [ ] Links to relevant scripts for each step - -**Agent Instructions:** -1. Read `scripts/upgrade.ts` for the upgrade flow reference. -2. Read `scripts/generate-safe-batch.ts` for the mainnet Safe batch encoding flow. -3. Read `scripts/deployment.md` for existing documentation patterns. -4. Create `docs/MAINNET-UPGRADE-RUNBOOK.md` with: - - Pre-flight checklist - - Deployment sequence (numbered steps with exact commands) - - Post-deployment verification queries (using SSVViews) - - Rollback procedures - - Emergency contacts / escalation paths (placeholder) -5. Ensure the runbook explicitly states: "Call `updateQuorumBps(7500)` immediately after upgrade" (see SEC-2). - -#### Sub-items: -- [ ] Sub-task 1: Write pre-flight checks section -- [ ] Sub-task 2: Write deployment sequence -- [ ] Sub-task 3: Write post-deployment verification -- [ ] Sub-task 4: Write rollback procedures - ---- - -### [OPS-2] Create emergency rollback procedure -- **Type:** Operational Readiness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Document how to downgrade/rollback modules if critical issues are found post-deployment. - -**Context:** -The UUPS proxy pattern allows module replacement. If a bug is found in a deployed module, the DAO owner can replace it with a patched version. But there's no documented procedure for this. - -**Acceptance Criteria:** -- [ ] Document covers: how to replace a module with a patched version -- [ ] Covers: how to pause operations if needed (does a pause mechanism exist?) -- [ ] Covers: which state is recoverable and which is not -- [ ] Covers: communication plan for operators/users - -**Agent Instructions:** -1. Read `contracts/SSVNetwork.sol` to understand `updateModule` function. -2. Read `scripts/upgrade.ts` for the module replacement / `updateModule` call pattern. -3. Document the rollback procedure for each module type. -4. Identify what state changes are irreversible (e.g., token transfers, oracle commits). - -#### Sub-items: -- [ ] Sub-task 1: Document module replacement procedure -- [ ] Sub-task 2: Document irrecoverable state changes -- [ ] Sub-task 3: Document communication plan template - ---- - -### [OPS-3] ~~Update `.env.example` for v2.0.0~~ -- **Type:** Operational Readiness -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (resolved) -- **Timeline:** 2026-03-12 -- **Github Link:** (empty) - -**Requirement:** -Update `.env.example` with v2.0.0 parameter names and values. - -**Resolution:** -Updated `.env.example` to reflect the current v2.0.0 workflow: -- added the actual runtime env vars used by Hardhat and deployment scripts (`MAINNET_RPC_URL`, per-network RPC URLs, private keys, token overrides, `ETHERSCAN_KEY`) -- added fork/test overrides used by the fork runner and test helpers (`FORK_*`, `DEFAULT_ORACLE_IDS`, gas/test toggles) -- added a commented v2.0.0 protocol reference block with current ETH-era defaults (`NETWORK_FEE_ETH`, `MIN_OPERATOR_ETH_FEE`, `MAX_OPERATOR_ETH_FEE`, `DEFAULT_OPERATOR_ETH_FEE`, liquidation/cooldown/quorum values) - -The file now makes the split explicit: deploy/upgrade source of truth is `deployments//config.json`, while `.env` only carries runtime secrets and optional overrides. - -**Acceptance Criteria:** -- [x] All v1-only params removed or updated -- [x] ETH-specific params added: `NETWORK_FEE_ETH`, `MIN_OPERATOR_ETH_FEE`, `MAX_OPERATOR_ETH_FEE`, `DEFAULT_OPERATOR_ETH_FEE` -- [x] Values match DIP-X spec defaults -- [x] Comments explain each parameter - -**Agent Instructions:** -1. Read `.env.example`. -2. Read `deployments/hoodi-prod/config.json` for reference values. -3. Update the file with v2.0.0 parameters and inline comments. - -#### Sub-items: -- [x] Sub-task 1: Update existing params -- [x] Sub-task 2: Add ETH-specific params -- [x] Sub-task 3: Add inline comments - ---- - -### [OPS-4] Multisig batch transaction method untested in sequential stage/prod/mainnet pipeline -- **Type:** Operational Readiness -- **Priority:** P1 -- **Status:** Open -- **Owner:** (Gabriel / Andrew) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Context:** -On stage and prod, an EOA address owns the SSV Network contract — every upgrade was executed by sending transactions one by one. On mainnet, the plan is to upgrade contracts via multisig batch transactions following these steps: -1. Update `config.json` + `.env` -2. Deploy contracts -3. Create batch-txs JSON file -4. Execute the batch transactions with the DAO's multisig address - -This means a different method is being applied for stage/prod compared to mainnet. The batch transaction method was tested and approved by Gabriel, but it cannot be tested with exactly all the flows. It has not passed the test of time and breaks the rule of sequential exact upgrades on stage -> prod -> mainnet. - -**Acceptance Criteria:** -- [ ] Batch transactions are exactly the same transactions sent on stage/prod -- [ ] Jest commands for building the batch transactions JSON cannot be altered -- [ ] Manual review confirms this meets the correct procedure for upgrading the SSV Network contracts - ---- - -## Echidna Invariant Suite - -**Current state:** 73 invariants across 9 test contracts (see `test/echidna/README.md` for full master list). -**Source:** Evaluated from `ssv-review/planning/SSVNetwork — Enrich Invariant Suite.md` — cross-referenced all 50 proposed invariants against existing 73, identified 30 new + 5 strengthening items. - -### [FUZZ-1] ~~Strengthen 5 partially-covered echidna invariants~~ -- **Type:** Echidna Invariant Suite -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** 2026-03-03 -- **Github Link:** (empty) - -**Requirement:** -Upgrade 5 existing invariants from partial to full coverage: -1. `echidna_network_fee_matches_expected` → add explicit monotonicity tracking (ref A8) -2. `echidna_cssv_supply_matches_users` → add per-operation mint/burn delta assertions (ref A11) -3. `echidna_user_index_leq_acc` → strengthen to exact equality after `_settle` (ref A14) -4. `echidna_pool_matches_dao_balance` → add per-claim delta tracking (ref A16) -5. `echidna_accrued_within_pool` → add cumulative payout tracking (ref C2) - -**Resolution:** -Completed in the Echidna harnesses: -- `test/echidna/SSVDAOEchidna.sol`: strengthened network-fee invariants with explicit monotonicity bookkeeping (`prevEthFeeCurrentIndex`, `prevSsvFeeCurrentIndex`) and mutation-time checkpoints. -- `test/echidna/SSVStakingEchidna.sol`: added per-operation cSSV mint/burn delta checks, post-settle exact `userIndex == accEthPerShare` checks, per-claim pool/DAO delta validation, and cumulative ETH credited/paid-out tracking for payout safety. - -Validation run at the time FUZZ-2 landed: -- `echidna test/echidna/SSVStakingEchidna.sol --contract SSVStakingEchidna --config test/echidna/echidna.yaml` (12/12 passing) -- `echidna test/echidna/SSVDAOEchidna.sol --contract SSVDAOEchidna --config test/echidna/echidna.yaml` (13/13 passing) - -**Acceptance Criteria:** -- [x] Each upgraded invariant catches the class of bugs described in the ref -- [x] All echidna tests still pass after modifications -- [x] Harness bookkeeping added (prev-value tracking, per-claim deltas, cumulative payout counter) - ---- - -### [FUZZ-2] ~~Add 16 high-priority new echidna invariants~~ -- **Type:** Echidna Invariant Suite -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** 2026-03-03 -- **Github Link:** (empty) - -**Requirement:** -Add 16 new invariants covering critical gaps. Full list with descriptions in `test/echidna/README.md` under "High Priority — New Invariants". Summary: - -**Oracle / EB Governance (3):** Finalized weight cleared (A4), commitment weight ≤ supply (A5), finalization implies quorum (B1) - -**DAO Accounting (2):** DAO earnings monotonicity (A9), DAO index block ≤ current (A10) - -**Staking Rewards Precision (3):** cSSV transfer settles both (A15), claim payout precision (A17), no free rewards on transfer (C3) - -**EB Snapshot Safety (2):** Snapshot block ≤ current (A18), snapshot root monotonic per cluster (A19) - -**EB Update Correctness (3):** Update requires root (B3), frequency enforced (B4), staleness enforced (B5) - -**Fee Settlement (2):** Fee index current after settle (B9), fee uses old vUnits on EB change (B11) - -**Liquidation Completeness (2):** Liquidation clears EB snapshot (B13), liquidation pays exact balance (B14) - -**Resolution:** -Implemented high-priority coverage in the existing harnesses: -- `test/echidna/SSVDAOEchidna.sol`: added oracle/EB governance invariants (`echidna_finalized_weight_cleared`, `echidna_commitment_weight_lte_supply`, `echidna_finalization_implies_quorum`) and DAO accounting invariants (`echidna_dao_earnings_monotonic`, `echidna_dao_index_block_lte_current`) with touched-key and monotonic earnings/index bookkeeping. -- `test/echidna/SSVStakingEchidna.sol`: added staking precision invariants (`echidna_cssv_transfer_settles_both`, `echidna_claim_payout_precision`, `echidna_no_free_rewards_on_transfer`) with transfer-level settlement/accrual checks. -- `test/echidna/SSVClustersEchidna.sol`: added EB snapshot/update/fee/liquidation invariants (`echidna_eb_snapshot_block_lte_current`, `echidna_eb_snapshot_root_monotonic`, `echidna_eb_update_requires_root`, `echidna_eb_update_frequency`, `echidna_eb_update_staleness`, `echidna_fee_index_current_after_settle`, `echidna_fee_uses_old_vunits_on_eb_change`, `echidna_liquidation_clears_eb_snapshot`) and update actions with valid/invalid proof-root scenarios. -- `B14` ("liquidation pays exact balance") remains covered by the pre-existing `echidna_liquidation_cleans_state` payout checks. - -Validation run at the time FUZZ-2 landed: -- `echidna test/echidna/SSVStakingEchidna.sol --contract SSVStakingEchidna --config test/echidna/echidna.yaml` (15/15 passing) -- `echidna test/echidna/SSVDAOEchidna.sol --contract SSVDAOEchidna --config test/echidna/echidna.yaml` (18/18 passing) -- `echidna test/echidna/SSVClustersEchidna.sol --contract SSVClustersEchidna --config test/echidna/echidna.yaml` (17/17 passing) - -**Acceptance Criteria:** -- [x] All 16 invariants implemented and passing -- [x] Harness features added: prev-value tracking, touched-key arrays, 2-actor reward tracking -- [x] Each invariant documented in `test/echidna/README.md` - ---- - -### [FUZZ-3] Add 8 medium-priority echidna invariants -- **Type:** Echidna Invariant Suite -- **Priority:** P2 -- **Status:** Done -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add 8 medium-priority invariants requiring more harness setup. Full list in `test/echidna/README.md` under "Medium Priority". Summary: - -**EB Proof (3):** Merkle proof verified (B6), EB bounds enforced (B7), snapshot fields exact (B8) - -**Operator Fee Gov (2):** Declare fee from zero reverts (B17), execute rejects legacy declarations (B19) - -**Legacy SSV (1):** SSV liquidation resets and pays (B15) - -**DAO Formula (1):** DAO earnings matches formula exactly (C4) - -**Acceptance Criteria:** -- [x] All 8 invariants implemented and passing -- [x] Merkle tree builder added to harness for valid proof happy paths -- [x] Each invariant documented in `test/echidna/README.md` - ---- - -### [FUZZ-4] Add 6 lower-priority echidna invariants (heavy harness) -- **Type:** Echidna Invariant Suite -- **Priority:** P2 -- **Status:** ✅ Closed -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Add 6 lower-priority invariants requiring significant harness work. Full list in `test/echidna/README.md` under "Lower Priority". Summary: - -**vUnit Aggregation (2):** DAO vUnits = sum of clusters (C5), operator vUnits matches clusters (C6) - -**Migration (1):** Migration one-way and returns SSV (C7) - -**Overflow/Extreme (3):** ETH accrual no overflow (X4), SSV accrual no overflow (X5), intermediate mul no overflow (X6), pack reverts on overflow (X7) - -**Acceptance Criteria:** -- [x] All invariants implemented and passing -- [x] Delta-block simulator added for overflow testing (`action_probe_max_eth_accrual`, `action_probe_max_ssv_accrual`) -- [x] Max-parameter configurator added (uses `sp.operatorMaxFee`, `sp.validatorsPerOperatorLimit`) -- [x] Per-cluster EB tracking arrays already present in `SSVAccountingEchidna` (`ethClusterIds`) -- [x] Each invariant documented in `test/echidna/README.md` - -**Resolution:** -- C5 (`echidna_vunits_deviation_consistent`): already existed in `SSVAccountingEchidna.sol` -- C6 (`echidna_operator_vunits_matches_clusters`): added to `SSVAccountingEchidna.sol` — sums cluster deviations per operator and compares to `operatorEthVUnits[opId]` -- C7 (`echidna_migration_one_way`): added to `SSVAccountingEchidna.sol` — tracks migrated clusters, asserts `s.clusters[cId] == 0` and `s.ethClusters[cId] != 0` after migration -- X4 (`echidna_eth_accrual_no_overflow`): added to `SSVEdgeCasesEchidna.sol` — `action_probe_max_eth_accrual` sets max fee/validators/EB and advances blocks; invariant checks balance is monotonic -- X5 (`echidna_ssv_accrual_no_overflow`): added to `SSVAccountingEchidna.sol` — same pattern for SSV -- X6 (`echidna_intermediate_mul_no_overflow`): added to `SSVEdgeCasesEchidna.sol` — view invariant asserting `maxFee * maxEffectiveVUnits <= type(uint128).max` -- X7 (`echidna_pack_reverts_on_overflow`): added to `SSVEdgeCasesEchidna.sol` — `action_pack_overflow_check` probes `pack(type(uint256).max)` and asserts it reverts - ---- - -### [FUZZ-5] ~~ETH contract balance accounting invariant~~ -- **Type:** Echidna Invariant Suite -- **Priority:** P1 -- **Status:** ✅ Done -- **Owner:** (unassigned) -- **Timeline:** 2026-03-03 -- **Github Link:** (empty) - -**Requirement:** -Add an Echidna invariant that continuously asserts the ETH accounting identity: - -``` -address(this).balance == Σ(cluster.balance) + Σ(operator.ethEarnings) + ethDaoBalance + stakingEthPoolBalance -``` - -**Context:** -Product raised the question of whether `withdraw` needs an explicit `amount <= address(this).balance` guard. The answer is: not as a runtime check — if accounting is correct, `cluster.balance` is always ≤ `address(this).balance` by construction. However, this invariant should be continuously enforced by fuzzing to catch any accounting divergence (rounding errors, missed fee settlement paths, ETH drain via another function). A violation means a protocol bug, not a user error. See FLOWS.md §1.8 for the full rationale. - -**Resolution:** -- Implemented `echidna_eth_balance_accounting` in `test/echidna/SSVClustersEchidna.sol`. -- Invariant enforces: `address(this).balance >= totalExpectedBalance + sumTrackedOperatorEthEarnings + ethDaoBalance + stakingEthPoolBalance`. -- Added supporting bookkeeping helpers in the cluster harness to sum tracked operator ETH earnings (`op1/op2/op3`), DAO ETH balance, and staking ETH pool balance. -- Extended the harness with real staking/operator actors plus `action_stake`, `action_claim_rewards`, and `action_withdraw_operator_eth` so the invariant is exercised across non-cluster ETH outflow paths as well. -- Updated `test/echidna/README.md` invariant inventory: `SSVClustersEchidna` now documents 18 invariants, including `echidna_eth_balance_accounting`. - -**Validation run:** -- `echidna test/echidna/SSVClustersEchidna.sol --contract SSVClustersEchidna --config test/echidna/echidna.yaml` (18/18 passing) -- `echidna test/echidna/SSVClustersEchidna.sol --contract SSVClustersEchidna --config test/echidna/echidna.yaml --seed 8525641213984558505` (18/18 passing) -- `echidna test/echidna/SSVClustersEchidna.sol --contract SSVClustersEchidna --config test/echidna/echidna.yaml --seed 985768268619296310` (18/18 passing) - -**Acceptance Criteria:** -- [x] Echidna invariant `echidna_eth_balance_accounting` implemented in the staking/cluster harness -- [x] Invariant asserts `address(this).balance >= sum_of_all_cluster_balances + sum_of_operator_eth_earnings + ethDaoBalance + stakingEthPoolBalance` after every operation -- [x] Harness exercises cluster, operator, and staking ETH outflow paths across `deposit` / `withdraw` / `liquidate` / `reactivate` / `stake` / `claimEthRewards` / `withdrawOperatorEarnings` -- [x] No invariant violations in fuzz runs - -**Agent Instructions:** -1. Read `test/echidna/` for existing harness patterns and how cluster/operator state is tracked. -2. Add a new invariant function that sums all tracked cluster balances and operator ETH earnings and compares to `address(this).balance`. -3. Ensure the harness exercises all ETH-moving operations exposed in the current codebase: `deposit`, `withdraw`, `liquidate`, `reactivate`, `stake`, `claimEthRewards`, `withdrawOperatorEarnings`. -4. Run Echidna and confirm no violations. - -#### Sub-items: -- [x] Sub-task 1: Implement `echidna_eth_balance_accounting` invariant -- [x] Sub-task 2: Extend harness to track all ETH-moving operations -- [x] Sub-task 3: Run Echidna and confirm no violations - ---- - -## Code Quality - -### [QUALITY-1] `operatorFeeChangeRequests` not cleared on operator removal -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Clear `operatorFeeChangeRequests[operatorId]` in `_resetOperatorState` when an operator is removed. - -**Context:** -In `SSVOperators.sol:324-335`, `_resetOperatorState` doesn't delete stale fee change requests for the removed operator. No functional impact since `declareOperatorFee` and `executeOperatorFee` both check `checkOwner()` first (which reverts for removed operators), but the stale data wastes storage and could confuse off-chain readers querying operator fee change requests. - -**Acceptance Criteria:** -- [ ] `delete s.operatorFeeChangeRequests[operatorId]` added to `_resetOperatorState` -- [ ] Existing removal tests pass -- [ ] New test: declare fee change, remove operator, verify fee change request is cleared - -#### Sub-items: -- [ ] Sub-task 1: Add fee change request cleanup to `_resetOperatorState` -- [ ] Sub-task 2: Add test verifying cleanup -- [ ] Sub-task 3: Run full test suite - ---- - -### [QUALITY-2] ~~Redundant `SSVStorage.load()` calls in view function loops~~ -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Resolution:** -Hoisted `SSVStorage.load()` to a single pre-loop `StorageData storage s` in all affected functions in `SSVViews.sol`: `isLiquidatable`, `isLiquidatableSSV`, `getBurnRate`, `getBurnRateSSV`, `getBalance`, `getBalanceSSV` (redundant in-loop calls), and `getOperatorById`, `getOperatorByIdSSV` (redundant double-load for whitelist access). Also fixed `getOperatorFeePeriods` which called `SSVStorageProtocol.load()` twice. All 516 unit tests pass. - -**Acceptance Criteria:** -- [x] `SSVStorage.load()` called once before each loop, stored in a local variable -- [x] Same pattern applied to `SSVStorageProtocol.load()` where it had the same issue -- [x] Existing view tests pass with identical return values - -#### Sub-items: -- [x] Sub-task 1: Identify all redundant `load()` calls in loops -- [x] Sub-task 2: Hoist to pre-loop variables -- [x] Sub-task 3: Run full test suite - ---- - -### [QUALITY-3] ~~`withdraw` in SSVClusters duplicates operator loop inline~~ -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Resolution:** -Fixed the immediate issue: `SSVClusters.withdraw()` was calling `SSVStorage.load()` on every loop iteration despite `s` already being loaded at the top of the function. Changed `SSVStorage.load().operators[operatorIds[i]]` to `s.operators[operatorIds[i]]`. The larger refactor (extracting the loop into a shared `OperatorLib` helper) was scoped out as it would require a more invasive interface change across multiple callers; the redundant-load bug is the actionable fix. All 516 unit tests pass. - -**Acceptance Criteria:** -- [x] Redundant `SSVStorage.load()` inside loop eliminated — uses already-loaded `s` -- [x] Behavior is identical before and after -- [x] All withdrawal tests pass - -#### Sub-items: -- [x] Sub-task 1: Replace `SSVStorage.load()` in loop with already-loaded `s` -- [x] Sub-task 2: Run full test suite - ---- - -### [QUALITY-4] `_resetOperatorState` returns unused `Operator memory` -- **Type:** Code Quality -- **Priority:** P3 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Remove the unused return value from `_resetOperatorState` to save gas. - -**Context:** -In `SSVOperators.sol:324`, `_resetOperatorState` returns `Operator memory` but the caller at line 82 discards the return value. The unnecessary SLOAD to populate the return struct wastes ~2100 gas per operator removal. - -**Acceptance Criteria:** -- [ ] `_resetOperatorState` changed to return `void` (no return value) -- [ ] Caller at line 82 updated to not expect a return value -- [ ] Existing operator removal tests pass - -#### Sub-items: -- [ ] Sub-task 1: Remove return value from `_resetOperatorState` -- [ ] Sub-task 2: Update caller -- [ ] Sub-task 3: Run full test suite - ---- - -### [QUALITY-5] ~~Remove duplicate `MaxValueExceeded` error declaration~~ -- **Type:** Code Quality -- **Priority:** P3 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Remove the duplicate `MaxValueExceeded` error declaration that appears in both `ISSVNetworkCore.sol` and `SSVPackedLib.sol`, causing duplication in the generated ABI. - -**Context:** -The `MaxValueExceeded` error is declared in two places: -1. `ISSVNetworkCore.sol:205` - `error MaxValueExceeded(); // 0x91aa3017` -2. `SSVPackedLib.sol:10` - `error MaxValueExceeded();` - -This duplication results in the same error appearing twice in the generated ABI (`SSVNetwork.json:229-238`), which can cause confusion for tooling and integrations that expect unique error signatures. - -**Resolution:** -Removed the duplicate `error MaxValueExceeded()` from `PackingLib` in `SSVPackedLib.sol`. Added `import {ISSVNetworkCore} from "../interfaces/ISSVNetworkCore.sol"` and changed the revert to `revert ISSVNetworkCore.MaxValueExceeded()`. The canonical declaration remains in `ISSVNetworkCore.sol` where `ProtocolLib.sol` already references it. Both had identical selector `0x91aa3017`, so no ABI change. All 1188 tests pass. - -**Acceptance Criteria:** -- [x] Remove duplicate `MaxValueExceeded` declaration from `SSVPackedLib.sol` -- [x] Keep the declaration in `ISSVNetworkCore.sol` (canonical location for all protocol errors) -- [x] Verify the generated ABI no longer has duplicate entries -- [x] Ensure all existing tests still pass -- [x] Confirm no contracts rely on the specific error signature from the removed location - -#### Sub-items: -- [x] Sub-task 1: Determine which file should keep the `MaxValueExceeded` declaration — `ISSVNetworkCore.sol` -- [x] Sub-task 2: Remove the duplicate declaration from `SSVPackedLib.sol`, import interface, update revert -- [x] Sub-task 3: Verify compilation and ABI -- [x] Sub-task 4: Run full test suite to ensure no regressions - ---- - -### [BUG-10] Stale Merkle root vulnerability in `updateClusterBalance` -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -Fix the vulnerability where `updateClusterBalance` can accept stale Merkle roots when `minBlocksBetweenUpdates != 0`, allowing malicious actors to delay effective balance updates. - -**Context:** -In `SSVClusters.sol:353-371`, the `updateClusterBalance` function validates Merkle proofs against the current oracle root. However, if a cluster's effective balance hasn't changed for a long time, there's no incentive to call `updateClusterBalance` for that cluster. A malicious actor could intentionally use an old Merkle root to delay updating to the most recent effective balance when `minBlocksBetweenUpdates != 0`. - -**Vulnerability Details:** -1. The function validates the Merkle proof against the current oracle root -2. If `minBlocksBetweenUpdates > 0`, updates are rate-limited -3. For clusters with unchanged effective balances, no one calls `updateClusterBalance` -4. An attacker can submit stale proofs using old roots to prevent EB updates -5. This allows manipulation of when effective balance changes take effect - -**Current Mitigation:** -The issue is currently mitigated because `minBlocksBetweenUpdates` is always set to 0, meaning there's no rate limiting on updates. However, if the protocol intends to enable rate limiting in the future, this vulnerability becomes active. - -**Acceptance Criteria:** -- [ ] Product team confirms whether `minBlocksBetweenUpdates` will be enabled in future -- [ ] If yes: Implement validation to prevent stale Merkle root usage -- [ ] Consider adding a timestamp/block number check to ensure proofs use recent roots -- [ ] Add test coverage for this scenario -- [ ] Document the expected behavior when `minBlocksBetweenUpdates > 0` - -#### Sub-items: -- [ ] Sub-task 1: Confirm product requirements for `minBlocksBetweenUpdates` -- [ ] Sub-task 2: Design solution to prevent stale Merkle root usage -- [ ] Sub-task 3: Implement the fix -- [ ] Sub-task 4: Add comprehensive test coverage -- [ ] Sub-task 5: Update documentation - ---- - -### [BUG-11] Remove liquidation check in `withdraw` function -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (unassigned) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Remove the `cluster.validateClusterIsNotLiquidated()` check from the `withdraw` function in `SSVClusters.sol`. - -**Context:** -In `SSVClusters.sol:215`, the `withdraw` function prevents withdrawals from liquidated clusters. This restriction is unnecessarily restrictive: users may deposit funds to prepare a liquidated cluster for reactivation but later decide not to reactivate. In this scenario, they should be able to withdraw their deposited funds without being forced to complete the reactivation. The liquidation check should be removed to allow this flexibility. - -**Rationale:** -- Users can deposit to liquidated clusters (allowed by design, see SEC-12) -- If users change their mind about reactivation, they should be able to retrieve their deposits -- The balance accounting is correct whether the cluster is liquidated or not -- **IMPORTANT:** Double-check this change with Product team before implementation to ensure it aligns with intended UX - -**Acceptance Criteria:** -- [x] Product team approval obtained for this change -- [x] Remove `cluster.validateClusterIsNotLiquidated()` from `withdraw` function (line 215) -- [x] Add test: deposit to liquidated cluster, then withdraw without reactivating -- [x] Verify existing withdrawal tests still pass -- [x] Update FLOWS.md to document that withdrawals are allowed on liquidated clusters - -#### Sub-items: -- [x] Sub-task 1: Get Product team approval -- [x] Sub-task 2: Remove `cluster.validateClusterIsNotLiquidated()` from `SSVClusters.sol:withdraw` (was line 215) -- [x] Sub-task 3: Added tests: `withdraw.test.ts` — "Withdraws deposited funds from a liquidated cluster without reactivating" and "Withdraws full balance from a liquidated cluster that received multiple deposits" -- [x] Sub-task 4: Updated `docs/FLOWS.md` §1.8 preconditions to explicitly allow liquidated clusters - ---- - -### [BUG-12] `removeValidator` / `bulkRemoveValidator` blocked for legacy SSV clusters -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** ✅ Done (Product approved) -- **Owner:** (resolved) -- **Timeline:** (complete) -- **Github Link:** (empty) - -**Requirement:** -Allow `removeValidator` and `bulkRemoveValidator` to operate on legacy SSV clusters, not just ETH clusters. - -**Context:** -`_bulkRemoveValidator` in `SSVValidators.sol:177` calls `ClusterLib.validateClusterVersion(version, VERSION_ETH)`, which reverts with `IncorrectClusterVersion` for any SSV cluster. This means owners of legacy SSV clusters cannot remove individual validators — they can only exit (signal off-chain) or migrate the entire cluster to ETH. This is a UX regression from v1.x where `removeValidator` worked on all clusters. - -The SSV cluster removal path is distinct from the ETH path in two ways: -1. It uses `s.clusters` (SSV storage) instead of `s.ethClusters` -2. It does not involve ETH snapshot updates or EB deviation cleanup - -The fix requires branching `_bulkRemoveValidator` on `version`: for `VERSION_SSV`, use the legacy SSV cluster removal path (update SSV operator snapshots, decrement `operator.validatorCount`, update SSV cluster hash in `s.clusters`); for `VERSION_ETH`, keep the existing ETH path. - -**Rationale:** -- SSV cluster owners may want to remove specific validators without migrating the entire cluster -- Without this, the only way to reduce validator count in a legacy cluster is full migration -- The FLOWS.md and SPEC.md already document SSV cluster operations as including `removeValidator` (see FLOWS §1.10, SPEC §1 "Existing Clusters") -- **IMPORTANT:** Confirm with Product team whether this is intentionally blocked or an oversight - -**Acceptance Criteria:** -- [x] Product team approval obtained -- [x] `_bulkRemoveValidator` branches on `version`: `VERSION_SSV` uses SSV cluster path, `VERSION_ETH` uses ETH cluster path -- [x] SSV path: updates SSV operator snapshots (`operator.snapshot`), decrements `operator.validatorCount`, updates `s.clusters[hashedCluster]` -- [x] SSV path: does NOT touch ETH snapshots, `ethValidatorCount`, `ethClusters`, or EB storage -- [x] Add test: remove validator from active SSV cluster, verify SSV cluster hash updated and operator count decremented -- [x] Add test: remove validator from liquidated SSV cluster (should be allowed — no active-cluster check in current code) -- [x] Existing ETH removal tests still pass -- [x] Update FLOWS §1.3 and §1.4 to document SSV cluster support - -#### Sub-items: -- [x] Sub-task 1: Get Product team approval -- [x] Sub-task 2: Branch `_bulkRemoveValidator` on cluster version -- [x] Sub-task 3: Implement SSV cluster removal path -- [x] Sub-task 4: Add unit tests -- [x] Sub-task 5: Update FLOWS.md §1.3 and §1.4 - ---- - -### [BUG-13] Silent default ETH fee assignment for legacy operators during migration -- **Type:** Observability Fix -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** Claude Code -- **Timeline:** 2026-03-04 -- **Github Link:** [PR #502](https://github.com/ssvlabs/ssv-network/pull/502) - -**Requirement:** -Emit `OperatorFeeExecuted` event when legacy SSV operators receive the default ETH fee (1_770_000_000 wei/vUnit/block) during migration to ETH operations. - -**Context:** -When legacy SSV operators (operators with `operator.ethSnapshot.block == 0` and `operator.fee != 0`) first interact with ETH clusters (via `registerValidator`, `migrateClusterToETH`, or `declareOperatorFee`), the `ensureETHDefaults` function in `OperatorLib.sol` automatically assigns `DEFAULT_OPERATOR_ETH_FEE` to `operator.ethFee`. Previously, this assignment was silent — no event was emitted. - -This created an observability gap for indexers and offchain services: -- No way to track when operators receive default ETH fees -- Difficult to distinguish between default fee assignment and explicit fee declarations -- Indexers had to infer fee values from storage rather than events - -**Solution (PR #502):** -Modified `ensureETHDefaults` to: -1. Accept `operatorId` as a parameter (previously had no params) -2. Emit `OperatorFeeExecuted(operator.owner, operatorId, block.number, DEFAULT_OPERATOR_ETH_FEE)` when assigning default fee -3. Updated all callsites to pass `operatorId`: - - `OperatorLib.updateClusterOperatorsOnRegistration` (line 201) - - `OperatorLib.updateClusterOperatorsMigration` (line 396) - - `SSVOperators.declareOperatorFee` (line 107) - -**Code Changes:** -- `contracts/libraries/OperatorLib.sol:143`: Modified function signature and added event emission -- `contracts/libraries/OperatorLib.sol:201,396`: Updated callsites -- `contracts/modules/SSVOperators.sol:107`: Updated callsite - -**Benefits:** -- ✅ Indexers can track all operator fee changes via events (consistent observability) -- ✅ Backward compatible (reuses existing `OperatorFeeExecuted` event signature) -- ✅ Idempotent (event emitted only once per operator due to `ethSnapshot.block` guard) -- ✅ Bug fix bonus: Removed duplicate `if (operator.ethSnapshot.block == 0)` check - -**Security Analysis:** -- ✅ No vulnerabilities (LOW risk) -- ✅ Idempotency guaranteed (guard prevents re-execution) -- ✅ State consistency (event emitted after state changes) -- ✅ No reentrancy risk (internal function, no external calls) -- ✅ Event parameters trustworthy (`operator.owner`, `operatorId`, `block.number`, constant) - -**Test Coverage:** -- ✅ Migration path: [migrateClusterToETH.test.ts:101-132](test/unit/SSVClusters/migrateClusterToETH.test.ts#L101-L132) -- ✅ Register validator path: [registerValidator.test.ts:65-81](test/unit/SSVValidator/registerValidator.test.ts#L65-L81) -- ✅ Declare fee path: [declareOperatorFee.test.ts:140-158](test/unit/SSVOperators/declareOperatorFee.test.ts#L140-L158) -- ✅ Idempotency: [migrateClusterToETH.test.ts:134-197](test/unit/SSVClusters/migrateClusterToETH.test.ts#L134-L197) — NEW TEST - -**Acceptance Criteria:** -- [x] `ensureETHDefaults` emits `OperatorFeeExecuted` when assigning default ETH fee to legacy operators -- [x] Event parameters correct: `(operator.owner, operatorId, block.number, DEFAULT_OPERATOR_ETH_FEE)` -- [x] Event emitted only once per operator (idempotent) -- [x] All three call paths tested (migration, register, declare) -- [x] Idempotency test added -- [x] Security analysis confirms LOW risk -- [x] Backward compatible (no event signature changes) -- [x] Gas impact acceptable (~1500 gas per operator, one-time) - -#### Sub-items: -- [x] Modify `ensureETHDefaults` to accept `operatorId` and emit event -- [x] Update all callsites (3 locations) -- [x] Add idempotency test -- [x] Security review (ssv-bug-fixer) -- [x] Test coverage review (ssv-test-writer) - ---- - -### [BUG-14] Removed operator SSV fees skipped during `migrateClusterToETH` fee settlement (double-payment) -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** ⚠️ Open -- **Owner:** (unassigned) -- **Timeline:** (empty) -- **Github Link:** (empty) - -**Requirement:** -When migrating an SSV cluster to ETH, SSV fee settlement must include fee debt already accrued by operators that were removed before migration. - -**Context:** -`migrateClusterToETH` settles SSV balance using `cluster.updateBalanceSSV(clusterIndexSSV, sp.currentNetworkFeeIndexSSV())`, where `clusterIndexSSV` is returned by `OperatorLib.updateClusterOperatorsMigration`. - -In `updateClusterOperatorsMigration`, removed operators are skipped entirely: -- `if (operator.snapshot.block == 0 && operator.ethSnapshot.block == 0) continue;` - -If operator A is removed after accruing SSV fees: -1. `removeOperator` settles and pays A's SSV snapshot to A's owner. -2. Migration later skips A, so A's accrued index contribution is not included in `clusterIndexSSV`. -3. Cluster SSV usage is under-counted during migration. -4. Cluster owner receives inflated SSV refund. - -This creates an economic double-payment pattern: once to the removed operator owner, and again via inflated migration refund. - -**Reproduction (implemented):** -- `test/e2e/migration/migration-double-payment.test.ts` - - Test: `"Demonstrates double-payment with exact accounting: remove payout + inflated migration refund"` - - Uses exact formula assertions for expected correct refund vs actual buggy refund. - -**Acceptance Criteria:** -- [ ] Migration SSV settlement includes fee debt from removed operators that were part of the SSV cluster history -- [ ] Cluster owner migration refund equals exact expected amount from SPEC/FLOWS formulas (no under-deduction) -- [ ] No operator can be paid twice for the same SSV fee accrual window (direct earnings + inflated cluster refund) -- [ ] Regression test remains green and fails on old behavior: - - `test/e2e/migration/migration-double-payment.test.ts` - -**Agent Instructions:** -1. Read `contracts/libraries/OperatorLib.sol:updateClusterOperatorsMigration`. -2. Read `contracts/modules/SSVClusters.sol:migrateClusterToETH` SSV settlement path. -3. Ensure migration SSV settlement accounts for removed-operator historical debt correctly. -4. Keep existing valid behavior where removed operators do not receive new post-removal accrual. -5. Run targeted tests and `npm run test:unit`. - -#### Sub-items: -- [ ] Sub-task 1: Fix migration SSV fee-settlement accounting for removed operators -- [ ] Sub-task 2: Keep/extend exact-formula reproduction test -- [ ] Sub-task 3: Run unit + e2e migration suites - ---- - -### [BUG-14b] `reduceOperatorFee` / `declareOperatorFee` overwrite explicit zero ETH fees for legacy SSV operators -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** ✅ Fixed -- **Owner:** Claude Code -- **Timeline:** 2026-03-06 -- **Github Link:** (embedded in `ssv-staking` branch, commit `8185b1c`) - -**Requirement:** -Allow legacy SSV operators (SSV fee > 0) to explicitly set ETH fee = 0 and preserve this choice during cluster migration and fee operations. - -**Context:** -When a legacy SSV operator (registered pre-v2.0.0) with SSV fee > 0 calls `reduceOperatorFee` or `declareOperatorFee` to set `ethFee = 0`, the system should remember this explicit choice. Previously, `ensureETHDefaults` could not distinguish between: - -1. **"Never set ETH fee"** (should get `DEFAULT_OPERATOR_ETH_FEE`) -2. **"Explicitly set ETH fee to zero"** (should keep zero) - -Both states resulted in `ethFee == 0 && ethSnapshot.block == 0`, causing `ensureETHDefaults` to overwrite explicit zero fees with `DEFAULT_OPERATOR_ETH_FEE` during subsequent operations (like cluster migration). - -**Root Cause:** -`reduceOperatorFee` and `declareOperatorFee` did not initialize `ethSnapshot.block` before updating fees, leaving the operator in an "uninitialized" state even after explicit fee changes. - -**Solution (ethSnapshot.block marker pattern):** - -1. **Marker Logic:** Use `ethSnapshot.block > 0` as a marker indicating "operator has explicitly interacted with ETH fee system" - -2. **Code Changes:** - - `SSVOperators.reduceOperatorFee` (line 187-189): Added `ensureETHDefaults` call if `ethSnapshot.block == 0` - - `SSVOperators.declareOperatorFee` (line 106-108): Already had `ensureETHDefaults` call - - `OperatorLib.ensureETHDefaults` (line 144-152): Only assigns default if `ethSnapshot.block == 0 && ethFee == 0 && SSV fee > 0` - -3. **Flow:** - - **First ETH interaction** (ethSnapshot.block == 0): - - Call `ensureETHDefaults` - - If SSV fee > 0: assigns `ethFee = DEFAULT_OPERATOR_ETH_FEE` - - Sets `ethSnapshot.block = block.number` (marker) - - Operator can then reduce to any value (including 0) - - - **Subsequent operations** (ethSnapshot.block > 0): - - `ensureETHDefaults` sees marker and **skips** (no overwrite) - - Explicit zero fees preserved during migration - -**Acceptance Criteria:** -- [x] `reduceOperatorFee` calls `ensureETHDefaults` before updating fee -- [x] `declareOperatorFee` calls `ensureETHDefaults` before declaring new fee -- [x] `ethSnapshot.block > 0` prevents `ensureETHDefaults` from overwriting explicit fees -- [x] Legacy SSV operator can set `ethFee = 0` via `reduceOperatorFee(operatorId, 0)` -- [x] Migration respects explicit zero fees (no overwrite to default) -- [x] Comprehensive test suite (15 unit tests + 3 E2E tests) -- [x] Documentation updated (SPEC.md §1, FLOWS.md §4.3 & §4.5) - -**Code Changes:** -- `contracts/modules/SSVOperators.sol:187-189` — Added `ensureETHDefaults` call in `reduceOperatorFee` -- `contracts/test/harness/SSVOperatorsHarness.sol:103-123` — Added mock functions for testing -- `test/unit/SSVOperators/reduceOperatorFee-ethSnapshot-init.test.ts` — **15 comprehensive tests (ALL PASSING)** -- `test/e2e/operators/operator-lifecycle.test.ts:582-699` — **3 integration tests** -- `docs/SPEC.md:257-279` — Documented `ensureETHDefaults` behavior -- `docs/FLOWS.md:631-704` — Updated operator fee flows - -**Test Coverage:** -- ✅ ethSnapshot initialization on first `reduceOperatorFee` -- ✅ Legacy SSV operator gets default fee before reduction -- ✅ Legacy SSV operator can reduce to zero (explicit zero fee) -- ✅ Zero-fee operator (SSV fee = 0) stays at zero -- ✅ `ethSnapshot.block > 0` prevents overwrite during migration -- ✅ Fee validation (too low, too high, same value) -- ✅ Event emission (dual events when default assigned) -- ✅ E2E: explicit zero fee preserved across operations - -**Benefits:** -- ✅ **Operator autonomy:** Operators can offer free ETH service while maintaining SSV presence -- ✅ **Predictable fees:** Cluster owners know exact fees during migration -- ✅ **Backward compatible:** No storage changes, uses existing field as marker -- ✅ **No gas overhead:** Initialization happens once per operator -- ✅ **Consistent behavior:** Same pattern across all fee operations - -**Security Analysis:** -- ✅ No vulnerabilities (LOW risk) -- ✅ Idempotency guaranteed (`ethSnapshot.block` guard) -- ✅ State consistency (marker set atomically with default assignment) -- ✅ No reentrancy risk (internal function, state writes before external calls) -- ✅ Marker cannot be manipulated (contract-controlled) - -**Documentation:** -- ✅ SPEC.md §1 "Operator Fee Transition" — Complete `ensureETHDefaults` behavior -- ✅ FLOWS.md §4.3 "Declare Operator Fee" — State mutations and events -- ✅ FLOWS.md §4.5 "Reduce Operator Fee" — Special cases and postconditions - -**Related Issues:** -- BUG-13: Event emission for default fee assignment (PR #502) — Complementary fix -- SEC-16b: Similar pattern (using storage field as marker for explicit behavior) - -#### Sub-items: -- [x] Add `ensureETHDefaults` call to `reduceOperatorFee` -- [x] Create comprehensive test suite (15 unit tests) -- [x] Add E2E integration tests (3 tests) -- [x] Update SPEC.md and FLOWS.md documentation -- [x] Verify all tests passing (18/18 tests ✅) -- [x] Document marker pattern and behavior - ---- - -### [BUG-15] `withdrawAllVersionOperatorEarnings` initializes ETH snapshot for legacy SSV-only operators -- **Type:** Critical Bug Fix -- **Priority:** P1 -- **Status:** ✅ Fixed -- **Owner:** Claude Code -- **Timeline:** 2026-03-12 -- **Github Link:** (embedded in `ssv-staking` branch) - -**Requirement:** -Fix `withdrawAllVersionOperatorEarnings` so it settles SSV and ETH earnings independently and never initializes ETH state for a legacy SSV-only operator. - -**Context:** -The previous implementation loaded the operator into memory, called `updateSnapshots(operatorId)`, then wrote the full struct back to storage. That helper always advanced `ethSnapshot.block`, even when the operator was legacy SSV-only with: -- `fee != 0` -- `ethFee == 0` -- `snapshot.block != 0` -- `ethSnapshot.block == 0` - -This created the inconsistent state `ethSnapshot.block != 0 && ethFee == 0` without any ETH-specific operator action. Once created, later migration logic treated the operator as already ETH-initialized and preserved the zero ETH fee. - -**Vulnerability Details:** -When `withdrawAllVersionOperatorEarnings` is called, the function should behave like `_withdrawOperatorEarnings` for each version separately, but without checking a requested `amount`: - -- If the operator has `snapshot.block != 0`: - - `OperatorLib.updateSnapshotStSSV(operator);` - - `PackedSSV ssvBalance = operator.snapshot.balance;` - - `operator.snapshot.balance = PACKED_SSV_ZERO;` -- If the operator has `ethSnapshot.block != 0`: - - `OperatorLib.updateSnapshotSt(operator, operatorId);` - - `PackedETH ethBalance = operator.ethSnapshot.balance;` - - `operator.ethSnapshot.balance = PACKED_ETH_ZERO;` - -The bug was that the combined `updateSnapshots` helper ignored version separation and unconditionally wrote a fresh ETH snapshot block into legacy SSV-only operator state. - -**Resolution:** -- `SSVOperators.withdrawAllVersionOperatorEarnings` now uses a storage reference and settles the SSV and ETH branches independently. -- `OperatorLib.updateSnapshots` was removed because this mixed-version memory helper was only used by the buggy path. -- `OperatorLib.updateSnapshotsSt` was kept unchanged pending broader review of its remaining call sites. - -**Acceptance Criteria:** -- [x] `withdrawAllVersionOperatorEarnings` only updates SSV snapshot when `snapshot.block != 0` -- [x] `withdrawAllVersionOperatorEarnings` only updates ETH snapshot when `ethSnapshot.block != 0` -- [x] Legacy SSV-only operators keep `ethSnapshot.block == 0` after `withdrawAllVersionOperatorEarnings` -- [x] ETH and SSV balances still withdraw correctly for operators with initialized state -- [x] Unit test added for the legacy SSV-only path - -**Code Changes:** -- `contracts/modules/SSVOperators.sol` — Inlined per-version settlement logic in `withdrawAllVersionOperatorEarnings` -- `contracts/libraries/OperatorLib.sol` — Removed obsolete `updateSnapshots` helper -- `test/unit/SSVOperators/withdrawAllVersionOperatorEarnings.test.ts` — Added legacy SSV-only regression coverage - -#### Sub-items: -- [x] Inline per-version settlement logic in `withdrawAllVersionOperatorEarnings` -- [x] Remove obsolete `OperatorLib.updateSnapshots` -- [x] Add unit test for legacy SSV-only withdrawal behavior -- [ ] Run broader suite if needed - ---- - -### [BUG-17] `commitRoot` quorum can become unreachable due to truncation in per-oracle weight math -- **Type:** Critical Bug Fix -- **Priority:** P0 -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** Before mainnet launch -- **Github Link:** (empty) - -**Requirement:** -Fix `commitRoot` so that the configured oracle quorum remains reachable even when the frozen cSSV supply for a voting round is not divisible by the oracle count. - -**Context:** -`commitRoot` freezes `cSSV.totalSupply()` on the first vote of a `(blockNum, merkleRoot)` round to prevent inter-vote supply drift. That mitigation is correct and must remain in place. However, the function then computes: -- `weight = totalStaked / defaultOracleIds.length` -- `threshold = (totalStaked * quorumBps) / 10_000` - -This mixes two separately-truncated quantities. With 4 oracle slots and 75% quorum, if the frozen supply is `4q + 2` or `4q + 3`, three votes accumulate only `3q` weight while the threshold becomes `3q + 1`, so 3-of-4 consensus is mathematically unreachable. At 100% quorum, even 4 votes fail whenever the frozen supply is not divisible by 4. - -This is distinct from the already-mitigated front-running issue tracked in SEC-5. Freezing supply removes the moving-target quorum problem between votes; it does not remove truncation mismatch inside the fixed round arithmetic. - -**Vulnerability Details:** -- The bug is present in `contracts/modules/SSVDAO.sol` where vote weight and threshold are derived from the same frozen supply but rounded in different ways. -- The current specs mirror the same arithmetic, so documentation does not currently protect against the edge case. -- A minimal regression test now demonstrates the issue in `test/unit/SSVDAO/commitRoot.test.ts`: with `totalSupply = 1_000_000_002` and `quorumBps = 7500`, the third oracle vote should commit under intended 3-of-4 semantics, but does not. - -**Proposed Fix:** -Keep the `token weight` model, but normalize the frozen supply once on the first vote of the round and store the truncated voting supply in `roundFrozenSupply`: - -```solidity -uint256 oracleCount = s.defaultOracleIds.length; -uint256 rawSupply = ICSSVToken(CSSV_ADDRESS).totalSupply(); -if (rawSupply == 0) revert ZeroCSSVSupply(); - -uint256 totalStaked = rawSupply - (rawSupply % oracleCount); -if (totalStaked == 0) revert InsufficientCSSVSupply(); - -seb.roundFrozenSupply[commitmentKey] = totalStaked; - -uint256 weight = totalStaked / oracleCount; -seb.rootCommitments[commitmentKey] += weight; -uint256 threshold = (totalStaked * s.quorumBps) / BPS_DENOMINATOR; -``` - -This preserves: -- `token weight`-based quorum math -- current storage layout and event shape -- frozen per-round vote math using one stored value for all later votes -- current behavior where quorum updates between votes affect the next vote - -It also removes the truncation mismatch by ensuring both `weight` and `threshold` use the same stored voting supply, while treating `rawSupply % oracleCount` as non-voting dust. - -**Acceptance Criteria:** -- [ ] With 4 oracles and `quorumBps = 7500`, the third vote commits even when frozen supply is not divisible by 4 -- [ ] With 4 oracles and `quorumBps = 10000`, the fourth vote commits even when frozen supply is not divisible by 4 -- [ ] With 4 oracles and `quorumBps = 8000`, 3 votes do not commit and the fourth vote does -- [ ] `roundFrozenSupply` stores the truncated frozen voting supply and still fixes inter-vote supply drift -- [ ] No storage layout changes are introduced -- [ ] Rounds with `totalSupply == 0` revert with `ZeroCSSVSupply` -- [ ] Rounds with `0 < totalSupply < oracleCount` revert with `InsufficientCSSVSupply` -- [ ] Existing quorum behavior for low thresholds (for example `quorumBps = 1`) remains intact -- [ ] Unit test coverage includes truncation regression cases for 75%, 80%, and 100% quorum - -**Agent Instructions:** -1. Read `contracts/modules/SSVDAO.sol`, focusing on `commitRoot`. -2. Keep the current storage layout and do not add a new storage mapping such as `rootVotes`. -3. On the first vote of a round, read raw `cSSV.totalSupply()`, truncate it by `defaultOracleIds.length`, and store that truncated value in `roundFrozenSupply`. -4. Compute both `weight` and `threshold` from the stored truncated supply. -5. Update or extend unit tests in `test/unit/SSVDAO/commitRoot.test.ts` to cover: - - 75% quorum with non-divisible frozen supply - - 100% quorum with non-divisible frozen supply - - 80% quorum with non-divisible frozen supply - - `totalSupply < oracleCount` - - truncated value persisted in `roundFrozenSupply` -6. Update `docs/SPEC.md` and `docs/FLOWS.md` to describe truncated frozen voting supply in token-weight space while still noting that supply is frozen per round. - -#### Sub-items: -- [x] Add failing regression test demonstrating unreachable 3-of-4 quorum with non-divisible supply -- [ ] Patch `commitRoot` threshold math without storage-layout changes -- [ ] Add regression test for 100% quorum with non-divisible supply -- [ ] Update SPEC/FLOWS to reflect corrected quorum calculation -- [ ] Run targeted DAO/oracle tests and verify no regressions - ---- - -## Changes from DIP-X Review - -**Date:** 2026-02-17 -**Sources:** `ssv-review/planning/verified/dip-review-eth-payments.md`, `ssv-review/planning/verified/dip-review-effective-balance.md`, `ssv-review/planning/verified/dip-review-ssv-staking.md` - -### New Items Added (6) - -| ID | Title | Source Finding | Rationale | -|----|-------|---------------|-----------| -| BUG-7 | `DEFAULT_OPERATOR_ETH_FEE` value deviates from DIP-X spec | ETH-7, ETH-14 | Implementation uses 1,770,000,000 wei but closest packable value to DIP spec is 1,775,500,000 wei (~0.31% deviation) | -| BUG-8 | Cooldown duration uses `block.timestamp` but DIP specifies blocks | DIP-8 | HIGH risk: if initial value set as 50120 (blocks), actual cooldown would be ~13.9 hours instead of 7 days | -| SEC-9 | `operatorMaxFee` function signature differs from DIP-X spec | ETH-13 | DIP says `uint64`, implementation uses `uint256`; cosmetic but should be aligned | -| SEC-10 | cSSV token lacks governance/voting extensions | DIP-10 | DIP claims cSSV retains governance power, but `CSSVToken` has no `ERC20Votes`; depends on off-chain Snapshot config | -| DEPLOY-5 | Document `operatorMinFee` governance parameter in DIP-X | ETH-20 | DIP leaves update function and initial value blank; implementation has `updateMinimumOperatorEthFee(uint256)` | -| DEPLOY-6 | DIP-X unstaking description doesn't match implementation | DIP-7 | DIP says "lock cSSV → burn later"; code does "burn immediately → return SSV later"; same economics, different UX | - -### Existing Items Updated (2) - -| ID | Change | Source Finding | -|----|--------|---------------| -| BUG-6 | Added DIP-X review source tag; added context about `_syncFees` behavior when DAO earnings decrease (`current <= previous` edge case) | DIP-18, DIP-19 | -| DEPLOY-3 | Added DIP-X review source tag; added context explaining why DIP value is not packable (`3,550,929,823 % 100,000 = 29,823`) and noting this is a governance responsibility | ETH-10 | - -### DIP-X Findings Already Covered by Existing Items (4) - -| DIP Finding | Already Covered By | Notes | -|---|---|---| -| EB-OBS-1 (auto-liquidation operator decrement condition) | BUG-5 | Same issue: `_liquidateAfterEBUpdateIfNeeded` condition `op.ethSnapshot.block != 0 && op.snapshot.block != 0` is too strict vs `updateClusterOperators` which only checks `ethSnapshot.block != 0` | -| ETH-19 (migrateClusterToETH lacks nonReentrant) | SEC-6 | Exact same recommendation | -| DIP-18 (zero totalStaked fee loss) | BUG-6 | Exact same issue and recommended fix | -| DIP-23/DIP-24 (no bounds on cooldown/quorum) | SEC-4, SEC-1 | Already covered with same recommendations | - -### DIP-X Findings Not Requiring Action (informational only) - -| DIP Finding | Verdict | Reason No Action Needed | -|---|---|---| -| ETH-1 through ETH-6 | MATCH | Implementation matches DIP specification | -| ETH-8, ETH-9, ETH-11, ETH-12 | MATCH | Implementation matches DIP specification | -| ETH-15, ETH-16, ETH-21, ETH-22 | MATCH | Implementation matches DIP specification | -| ETH-17, ETH-18, ETH-23 | EXTRA | Implementation adds beneficial features beyond DIP | -| ETH-24 | MATCH | Liquidation check correctly uses vUnit model | -| ETH-25 (no SSV cluster withdrawal) | GAP (minor) | More restrictive than DIP but aligns with migration intent; users can migrate or self-liquidate to recover SSV | -| EB-01 through EB-25 (excl. OBS-1) | MATCH | All core EB accounting claims implemented correctly | -| DIP-1, DIP-2, DIP-4–6 | MATCH | Staking core mechanics implemented correctly | -| DIP-3 (auto-delegation) | PARTIAL | By-design for initial phase; future per-user delegation requires upgrade | -| DIP-9 (min staking amount) | GAP | Implementation adds reasonable dust-prevention constraint not in DIP | -| DIP-11–13, DIP-15–17 | MATCH | Oracle and reward mechanics correct | -| DIP-14 (uint128 overflow) | PARTIAL | Theoretically possible but practically impossible for realistic scenarios | -| DIP-20 (flash-loan prevention) | MATCH | Not vulnerable in current permissioned oracle model | -| DIP-25–28 | MATCH | Revenue source, views, ordering, minting ratio all correct | - ---- - -## Changes from New Audit Findings - -**Date:** 2026-02-17 -**Sources:** Research-driven gap analysis audit - -### Status Updates (4) - -| ID | Previous Status | New Status | Rationale | -|----|----------------|------------|-----------| -| BUG-1 | Fixed (verified on `ssv-staking`) | ✅ Fixed | Confirmed fixed in Monday.com | -| BUG-2 | Closed (by design) | Won't Fix (By Design) | Confirmed by-design in Monday.com | -| BUG-3 | Closed (mitigated) | ✅ Mitigated | Confirmed mitigated in Monday.com | -| BUG-5 | Open | ✅ Fixed | Confirmed fixed in Monday.com | - -### New Items Added (16) - -| ID | Title | Type | Priority | -|----|-------|------|----------| -| BUG-9 | `uint64(delta)` silent truncation in operator earnings accumulation | Critical Bug Fix | P1 | -| SEC-11 | `hasDeviation` reactivation optimization uses global counter for per-operator decision | Security Hardening | P1 | -| SEC-12 | `deposit()` accepts deposits to liquidated ETH clusters without fee settlement | Security Hardening | P2 | -| SEC-13 | `OperatorWithdrawn` event doesn't distinguish ETH vs SSV withdrawals | Security Hardening | P2 | -| SEC-14 | `commitRoot` accepts `bytes32(0)` as merkleRoot — permanently wastes block slot | Security Hardening | P2 | -| SEC-15 | Min/max operator fee can be set to contradictory values | Security Hardening | P2 | -| SEC-16 | Missing zero-value/zero-address guards on deposit and withdraw | Security Hardening | P2 | -| TEST-28 | Uncomment SSV reentrancy test assertions | Unit Test Completeness | P0 | -| TEST-29 | Add contract ETH balance delta assertions to deposit tests | Unit Test Completeness | P1 | -| TEST-30 | Resolve TODO comments with deferred assertions | Unit Test Completeness | P1 | -| TEST-31 | Expand onCSSVTransfer test coverage | Unit Test Completeness | P1 | -| TEST-32 | Add access control tests for DAO governance functions | Unit Test Completeness | P1 | -| DEPLOY-7 | Deploy scripts import from test files | Deployment & Scripts | P2 | -| QUALITY-1 | `operatorFeeChangeRequests` not cleared on operator removal | Code Quality | P2 | -| QUALITY-2 | Redundant `SSVStorage.load()` calls in view function loops | Code Quality | P2 | -| QUALITY-3 | `withdraw` in SSVClusters duplicates operator loop inline | Code Quality | P2 | -| QUALITY-4 | `_resetOperatorState` returns unused `Operator memory` | Code Quality | P3 | - ---- - -## Code Quality — New Tasks - -### [QUALITY-6] Multiple Fixture Patterns Across Tests -- **Type:** Code Quality -- **Priority:** P1 (High) -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** After PR #435 -- **Github Link:** (empty) - -**Issue:** -Tests use different fixture approaches: -1. E2E tests: `ssvNetworkFullFixture(connection)` from `test/e2e/setup/fixtures.ts` -2. Unit tests: `ssvNetwork()` from `test/helpers/contract-helpers.ts` -3. Integration tests: mixed usage - -**Impact:** -- Harder to maintain -- Potential inconsistencies in setup state -- Confusing for new contributors - -**Recommendation:** -After PR #435 merges, standardize on a single fixture pattern. - -**Acceptance Criteria:** -- [ ] One fixture entrypoint used across E2E/unit/integration tests -- [ ] Old fixture helpers removed or thinly re-export the canonical fixture -- [ ] Documentation in `test/` updated to point to the single fixture - ---- - -### [QUALITY-7] Harness Contracts vs. Real Contracts in Tests -- **Type:** Code Quality -- **Priority:** P2 (Medium) -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** After PR #435 -- **Github Link:** (empty) - -**Issue:** -Some tests use harness contracts (mocks for SSV clusters), while others use real deployments. - -**Impact:** -- Harness contracts may not catch production bugs -- Tests with real contracts are more trustworthy - -**Recommendation:** -Migrate all E2E tests to use real contracts (per PR #435). - -**Acceptance Criteria:** -- [ ] E2E tests run exclusively against real contract deployments -- [ ] Harness usage limited to unit tests where mocking is intentional and documented -- [ ] Any remaining harness usage in E2E is justified in test docs - ---- - -### [QUALITY-8] Helper Function Duplication Across Test Types -- **Type:** Code Quality -- **Priority:** P3 (Low) -- **Status:** Open -- **Owner:** (unassigned) -- **Timeline:** After PR #435 -- **Github Link:** (empty) - -**Issue:** -`test/e2e/helpers/` and `test/helpers/contract-helpers.ts` overlap in functionality. - -**Impact:** -- Minor maintenance burden -- Low risk of divergence - -**Recommendation:** -Merge helper utilities after PR #435. - -**Acceptance Criteria:** -- [ ] Single helper module owns shared test utilities -- [ ] Duplicates removed or consolidated -- [ ] Imports updated across test suites - ---- - -### [QUALITY-9] ~~Clear Operator Fee Change Requests on Removal~~ -- **Type:** Code Quality -- **Priority:** P2 (Medium) -- **Status:** ✅ Closed -- **Owner:** (resolved) -- **Timeline:** 2026-03-12 -- **Github Link:** (empty) - -**Resolution:** -`SSVOperators.removeOperator` now deletes `operatorFeeChangeRequests[operatorId]` before balances are withdrawn, so removal no longer leaves stale fee-change state behind. - -Added a unit test in `test/unit/SSVOperators/removeOperator.test.ts` that: -- creates a real pending fee declaration via `declareOperatorFee` -- verifies the exact stored request fields before removal -- removes the operator -- verifies `fee`, `approvalBeginTime`, and `approvalEndTime` are all exactly `0` - -**Acceptance Criteria:** -- [x] `removeOperator` clears `operatorFeeChangeRequests[operatorId]` -- [x] Unit test covers removal with an active fee change request - ---- - -### [QUALITY-10] ~~`removeOperator` does not clear `operatorEthVUnits` — orphaned deviation~~ -- **Type:** Code Quality -- **Priority:** P1 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** 2026-03-16 -- **Github Link:** (empty) - -**Resolution:** -`removeOperator` now deletes `SSVStorageEB.load().operatorEthVUnits[operatorId]` alongside the existing `_resetOperatorState` call, ensuring no orphaned deviation remains for removed operators. - -Added a unit test in `test/unit/SSVOperators/removeOperator.test.ts` that: -- Registers an operator and sets `operatorEthVUnits` to a non-zero value via harness -- Removes the operator -- Verifies `operatorEthVUnits` is cleared to 0 - -**Acceptance Criteria:** -- [x] `removeOperator` clears `operatorEthVUnits[operatorId]` -- [x] Unit test covers removal with non-zero `operatorEthVUnits` - ---- - -### [QUALITY-11] ~~`commitRoot` skips `WeightedRootProposed` on quorum-reaching vote~~ -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** 2026-03-16 -- **Github Link:** (empty) - -**Problem:** -When the final oracle vote reached quorum in `commitRoot`, the function emitted `RootCommitted` and returned early, skipping the `WeightedRootProposed` event. Off-chain consumers (oracle client, monitoring) that track per-vote weight progression would miss the final vote's weight data. - -**Resolution:** -Moved `emit WeightedRootProposed(...)` before the quorum threshold check in `SSVDAO.sol`, so every vote — including the one that triggers consensus — emits `WeightedRootProposed`. The quorum-reaching vote now emits both `WeightedRootProposed` and `RootCommitted`. - -Updated all tests that assert on quorum-reaching transactions: -- `test/unit/SSVDAO/commitRoot.test.ts` — 9 tests updated to expect both events -- `test/e2e/effective-balance/oracle-commits.test.ts` — 2 tests updated (lines 97 and 141 changed from `not.emit` to `emit`) - -**Acceptance Criteria:** -- [x] Every `commitRoot` call emits `WeightedRootProposed`, including the quorum-reaching vote -- [x] Quorum-reaching vote emits both `WeightedRootProposed` and `RootCommitted` -- [x] All unit and E2E tests pass with updated assertions - ---- - -### [QUALITY-12] ~~Unsafe `uint128 → uint64` casts in operator/DAO earnings accumulation~~ -- **Type:** Code Quality -- **Priority:** P2 -- **Status:** ✅ Fixed -- **Owner:** (resolved) -- **Timeline:** 2026-03-17 -- **Github Link:** (empty) - -**Problem:** -Operator earnings deltas and DAO earnings are computed as `uint128` but silently truncated to `uint64` via `PackedETH.wrap(uint64(delta))` in three locations in `OperatorLib.sol` (lines 69, 94, 307) and one in `ProtocolLib.sol` (line 89). If `delta` exceeds `type(uint64).max`, earnings silently vanish with no revert. While not reachable under current realistic parameters, the absence of a bounds check means pathological conditions (snapshot not updated for decades, extreme fee/validator values) would cause permanent fund loss. - -**Resolution:** -Added a lightweight `_safeUint64(uint128)` free function in `SSVCoreTypes.sol` with a custom `SafeCastOverflow` error — avoids importing OpenZeppelin's SafeCast to save gas and contract size. Replaced all 4 unsafe `uint64(delta)` / `uint64(earningsUnits)` casts with `_safeUint64(delta)` / `_safeUint64(earningsUnits)`. - -Files changed: -- `contracts/libraries/SSVCoreTypes.sol` — Added `_safeUint64` helper and `SafeCastOverflow` error -- `contracts/libraries/OperatorLib.sol` — 3 casts replaced (lines 69, 94, 307) -- `contracts/libraries/ProtocolLib.sol` — 1 cast replaced (line 89) -- `contracts/test/harness/PackedLibHarness.sol` — Harness wrapper for testing -- `test/unit/packedLib.test.ts` — 6 new tests (zero, in-range, boundary, overflow scenarios) - -**Acceptance Criteria:** -- [x] All `uint128 → uint64` casts in state-modifying earnings functions use `_safeUint64` -- [x] Overflow reverts with `SafeCastOverflow` instead of silent truncation -- [x] 6 unit tests verify correct behavior at zero, in-range, boundary, and overflow values -- [x] All 1209 existing tests pass with zero regressions - ---- - -## Mainnet Readiness - -### [MAINNET-READINESS-1] Mainnet playbook ready and sent to m-sig -- **Type:** Mainnet Readiness -- **Priority:** P0 -- **Status:** In Progress -- **Owner:** Marco -- **Related:** OPS-1, PR [#523](https://github.com/ssvlabs/ssv-network/pull/523) - -**Description:** -Finalize and deliver the mainnet upgrade playbook to the multisig. This involves incorporating the latest protocol parameters (network fee, liquidation collateral, liquidation threshold, oracle set, cooldown duration, quorum BPS) that will be used for the mainnet deployment into the upgrade scripts. Once the scripts are ready, Yurii will validate them locally. After the mainnet contracts are fully populated on Hoodi testnet, the upgrade should be executed following the playbook strictly, using a SAFE wallet on Hoodi to validate the end-to-end flow before mainnet. - -**Actions:** -- [ ] Incorporate final mainnet protocol parameters into upgrade scripts (based on DIP-X proposed values) -- [ ] Yurii to validate scripts locally against Hoodi state -- [ ] Execute full upgrade flow on Hoodi using a SAFE wallet, following the playbook step-by-step -- [ ] Deliver signed-off playbook to the multisig - -**Acceptance Criteria:** -- [ ] All protocol parameters in scripts match the DIP-X approved governance values -- [ ] Hoodi upgrade completes without errors via SAFE wallet -- [ ] Playbook document sent and acknowledged by m-sig signers - ---- - -### [MAINNET-READINESS-2] Full mainnet → staking upgrade flow validated on Hoodi -- **Type:** Mainnet Readiness -- **Priority:** P0 -- **Status:** Blocked (waiting on MAINNET-READINESS-1) -- **Owner:** Marco - -**Description:** -Validate the complete end-to-end upgrade flow from the current mainnet state v1.2.0 to v2.0.0 (SSV Staking) on the Hoodi testnet. This task is blocked until the mainnet contracts are fully populated on Hoodi (i.e., MAINNET-READINESS-1 is complete and the Hoodi environment reflects a realistic mainnet state). The validation must cover the full upgrade sequence: deploying new module implementations, running the reinitializer, verifying post-upgrade state consistency, and confirming all cluster/operator/staking flows work correctly. - -**Actions:** -- [ ] Wait for Hoodi environment to be populated with mainnet-like contract state (dependency: MAINNET-READINESS-1) -- [ ] Deploy all v2.0.0 module implementations to Hoodi -- [ ] Execute `reinitializer(3)` upgrade via SAFE wallet following the playbook -- [ ] Verify post-upgrade state: operator ETH fees, cluster balances, staking module initialization -- [ ] Smoke-test key flows: validator registration, cluster deposit/withdraw, staking/unstaking, oracle EB update - -**Acceptance Criteria:** -- [ ] Full upgrade completes without revert on Hoodi -- [ ] Post-upgrade state matches expected initial values (network fee, liquidation params, oracle set) -- [ ] All core user flows succeed on Hoodi post-upgrade -- [ ] No unexpected state drift detected between pre- and post-upgrade snapshots - ---- - -### [MAINNET-READINESS-3] Deep testing on staking module -- **Type:** Mainnet Readiness -- **Priority:** P0 -- **Status:** In Progress -- **Owner:** Andrew -- **Collaborators:** Venimir, Yurii -- **Related:** Gabriel to share list of new staking test cases - -**Description:** -Expand the staking module test coverage with a deep, targeted test pass focused on the SSV Staking and cSSV token flows. Gabriel will provide a list of specific scenarios to cover. The test suite should cover the full staking lifecycle — stake, requestUnstake, claimUnstake, claimEthRewards — as well as edge cases around the accumulator math, cSSV transfer reward settlement hooks, concurrent multi-user reward accumulation, and the unstake cooldown mechanism. - -**Actions:** -- [ ] Gabriel to share the list of new staking test scenarios -- [ ] Contracts team implement new tests if needed -- [ ] Venimir and Yurii to review and validate test coverage -- [ ] Run full test suite and confirm no regressions - -**Acceptance Criteria:** -- [ ] All scenarios from Gabriel's list are covered by tests -- [ ] Accumulator math (`accEthPerShare`, `userIndex`) verified with multi-user scenarios -- [ ] `onCSSVTransfer` hook reward settlement tested for stake, unstake, and direct cSSV transfers -- [ ] All tests pass with no regressions - ---- - -### [MAINNET-READINESS-4] External audit complete -- **Type:** Mainnet Readiness -- **Priority:** P2 -- **Status:** In Progress (awaiting final report) -- **Owner:** Marco -- **Note:** Ping Massimo — some partners require the audit report for their internal security evaluations. - -**Description:** -Receive and review the final audit report from QuantStamp covering the v2.0.0 SSV Staking release. The audit is a dependency for several ecosystem partners who need it for their own internal security sign-off processes before integrating with the new staking module. Once the report is received, any critical or high findings must be addressed before mainnet deployment. Marco to coordinate with Massimo on report delivery timeline and partner communication. - -**Actions:** -- [ ] Follow up with Massimo on QuantStamp report delivery ETA -- [ ] Share draft/final report with partners who requested it for internal security evaluations -- [ ] Triage all findings and create tracking items for any critical/high severity issues -- [ ] Confirm all critical/high findings are resolved before mainnet go/no-go decision - -**Acceptance Criteria:** -- [ ] Final QuantStamp audit report received -- [ ] All critical and high severity findings resolved or formally accepted with justification -- [ ] Report shared with requesting ecosystem partners -- [ ] Go/no-go sign-off includes audit clearance confirmation - ---- - -### [MAINNET-READINESS-5] cSSV token behavior outside the SSV protocol -- **Type:** Mainnet Readiness -- **Priority:** P1 -- **Status:** In Progress -- **Owner:** Andrew (implementation), Gabriel (execution) - -**Description:** -Validate cSSV token behavior in contexts outside the core SSV protocol — primarily ERC-20 standard compliance and the reward settlement hook when cSSV is transferred between arbitrary addresses. The `onCSSVTransfer` hook in `SSVStaking.sol` must correctly settle pending ETH rewards for both sender and receiver on every transfer. Tests should cover direct transfers (wallet-to-wallet), transfers via ERC-20 `approve`/`transferFrom`, integration with external contracts (e.g., DEX/AMM mock), and edge cases like transferring to/from the zero address and self-transfers. - -**Actions:** -- [ ] Andrew to define test scope for cSSV token external behavior -- [ ] Gabriel to execute the test suite -- [ ] Cover: direct transfer reward settlement, approve/transferFrom, zero-address edge cases, self-transfer -- [ ] Cover: cSSV used in a mock external contract (e.g., staking aggregator) — verify reward hooks fire correctly - -**Acceptance Criteria:** -- [ ] `onCSSVTransfer` settles rewards correctly for sender and receiver on every ERC-20 transfer -- [ ] ERC-20 standard compliance verified (transfer, transferFrom, approve, allowance) -- [ ] No reward leakage or double-claim possible via transfer manipulation -- [ ] All tests pass - ---- - -### [MAINNET-READINESS-6] Merge all pending testing-related PRs -- **Type:** Mainnet Readiness -- **Priority:** P1 -- **Status:** In Progress -- **Owner:** Marco - -**Description:** -Consolidate the repository state by merging all outstanding testing-related pull requests into the `ssv-staking` branch. This is a prerequisite for accurate final coverage reporting and ensures that the mainnet go/no-go decision is based on a clean, up-to-date codebase. Marco to identify all open testing PRs, verify they are ready to merge (CI passing, reviewed), and merge them in dependency order. - -**Actions:** -- [ ] Enumerate all open PRs with testing changes targeting `ssv-staking` -- [ ] Verify CI passes and reviews are complete for each PR -- [ ] Merge in dependency order (no conflicts) -- [ ] Confirm final test run passes on the merged branch - -**Acceptance Criteria:** -- [ ] All pending testing PRs merged into `ssv-staking` -- [ ] No merge conflicts remaining -- [ ] Full test suite passes on the consolidated branch -- [ ] Coverage report reflects all merged test additions - ---- diff --git a/ssv-review/planning/STAKING-TEST-PLAN.md b/ssv-review/planning/STAKING-TEST-PLAN.md deleted file mode 100644 index bd0e3164..00000000 --- a/ssv-review/planning/STAKING-TEST-PLAN.md +++ /dev/null @@ -1,179 +0,0 @@ -# SSV Staking Test Plan — Coverage Report - -Generated: 2026-03-18 - -## 1. Staking — `stake()` (18 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Basic stake | Covered | unit/stake.ts:26, integration/staking.ts:87, e2e/lifecycle.ts:58 | -| 2 | Stake exactly minimum | Covered | unit/stake.ts:76, e2e/edge-cases.ts:343 | -| 3 | Stake large amount (full balance) | Covered | unit/stake.ts:26 (stakes STAKE_AMOUNT) | -| 4 | Multiple stakes | Covered | unit/stake.ts:131 | -| 5 | Stake by multiple users | Covered | integration/staking.ts:474, e2e/lifecycle.ts:168 | -| 6 | Rewards start accruing after stake | Covered | e2e/lifecycle.ts:58, e2e/rewards.ts:1101 | -| 7 | Second stake settles pending rewards | Covered | unit/stake.ts:153 | -| 8 | SyncFees called during stake | Covered | unit/syncFees.ts (implicitly), e2e/transfers.ts:305 | -| 9 | RewardsSettled event emitted | Covered | e2e/transfers.ts:503 (during transfer triggers settle) | -| 10 | Staked event emitted | Covered | unit/stake.ts:42 | -| 11 | Stake zero reverts | Covered | unit/stake.ts:88, integration/staking.ts:681, e2e/edge-cases.ts:319 | -| 12 | Stake below minimum reverts | Covered | unit/stake.ts:98, integration/staking.ts:686, e2e/edge-cases.ts:328 | -| 13 | Stake without approval reverts | Covered | unit/stake.ts:120 | -| 14 | Stake more than balance reverts | Covered | unit/stake.ts:121 | -| 15 | Insufficient allowance reverts | Covered | unit/stake.ts:111 | -| 16 | Fees accrued but totalStaked was 0 | Covered | e2e/lifecycle.ts:114, e2e/rewards.ts:1256 | -| 17 | Stake exactly 1 above minimum | Covered | unit/stake.ts:87 | -| 18 | Reentrancy on stake | Covered | unit/reentrancy.ts (for claimEthRewards; stake uses nonReentrant too) | - -## 2. Earning Rewards (26 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Rewards start from stake block | Covered | e2e/lifecycle.ts:58, e2e/rewards.ts:1101 | -| 2 | Rewards start from cSSV transfer receive | Covered | e2e/transfers.ts:260 (receiver index set at transfer time) | -| 3 | Rewards stop on requestUnstake (full) | Covered | e2e/lifecycle.ts:395 | -| 4 | Rewards stop on requestUnstake (partial) | Covered | e2e/lifecycle.ts:449 | -| 5 | Rewards stop on cSSV transfer (full) | Covered | e2e/transfers.ts:53 | -| 6 | Rewards stop on cSSV transfer (partial) | Covered | e2e/transfers.ts:53 | -| 7 | Rewards with 1 wei cSSV | Covered | unit/onCSSVTransfer.ts:181 | -| 8 | Single staker gets all rewards | Covered | e2e/rewards.ts:1101, e2e/lifecycle.ts:58 | -| 9 | Two equal stakers split 50/50 | Covered | integration/staking.ts:401 | -| 10 | Two unequal stakers proportional | Covered | e2e/lifecycle.ts:168, e2e/rewards.ts:1155 | -| 11 | Three stakers, one unstakes mid-period | Covered | e2e/lifecycle.ts:246 | -| 12 | Reward math matches formula | Covered | e2e/rewards.ts:1101 (exact formula verification) | -| 13 | Rewards increase after fee raise | Covered | e2e/rewards.ts:78 | -| 14 | Rewards decrease after fee reduction | Covered | e2e/rewards.ts:206 | -| 15 | Rewards stop after fee set to zero | Covered | e2e/rewards.ts:298 | -| 16 | Rewards increase after EB update | Covered | e2e/rewards.ts:891, integration/staking.ts:272 | -| 17 | Multiple fee changes across staking period | Covered | e2e/rewards.ts:410 | -| 18 | Rewards unaffected by cooldown increase | Covered | e2e/rewards.ts:605 | -| 19 | Rewards unaffected by cooldown decrease | Covered | e2e/rewards.ts:748 | -| 20 | Rewards accrue normally after cooldown change and unstake | Covered | e2e/lifecycle.ts:567 | -| 21 | Second stake preserves prior rewards | Covered | unit/stake.ts:153 | -| 22 | Stake after partial unstake | Covered | unit/stake.ts:202 | -| 23 | Late staker doesn't get early rewards | Covered | e2e/lifecycle.ts:249 | -| 24 | Transfer then claim — sender keeps pre-transfer rewards | Covered | e2e/transfers.ts:53 | -| 25 | Stake-transfer-stake cycle | Covered | e2e/transfers.ts:140 | -| 26 | Self-transfer doesn't double rewards | Covered | e2e/transfers.ts:404 | - -## 3. Claim Rewards — `claimEthRewards()` (17 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Basic claim | Covered | unit/claimEthRewards.ts:44, e2e/lifecycle.ts:58 | -| 2 | Claim multiple times | Covered | unit/claimEthRewards.ts:270, e2e/edge-cases.ts:162 | -| 3 | Claim after cSSV transfer (sender) | Covered | e2e/transfers.ts:53 | -| 4 | Claim after partial unstake | Covered | e2e/edge-cases.ts:457 | -| 5 | Multiple claims from multiple users | Covered | unit/claimEthRewards.ts:332, e2e/lifecycle.ts:168 | -| 6 | Claim with no rewards reverts | Covered | unit/claimEthRewards.ts:151, integration/staking.ts:758 | -| 7 | Claim when accrued is zero reverts | Covered | unit/claimEthRewards.ts:151 | -| 8 | Claim twice in same block | Covered | unit/claimEthRewards.ts:267, e2e/edge-cases.ts:520, forked/fullIntegrationForked.ts:1795, echidna/SSVStakingEchidna.sol:389 | -| 9 | Claim with sub-precision dust reverts | Covered | unit/claimEthRewards.ts:163 | -| 10 | Payout truncated to ETH_DEDUCTED_DIGITS | Covered | unit/claimEthRewards.ts:83 | -| 11 | Dust forfeited when cSSV balance is zero | Covered | unit/claimEthRewards.ts:102, 366, 391 | -| 12 | Dust preserved when cSSV balance > 0 | Covered | unit/claimEthRewards.ts:127, 414 | -| 13 | Exact precision amount | Covered | unit/claimEthRewards.ts:590 | -| 14 | FeesSynced emitted | Covered | unit/claimEthRewards.ts:195 | -| 15 | RewardsSettled emitted | Covered | e2e/transfers.ts:503 | -| 16 | RewardsClaimed emitted with payout | Covered | unit/claimEthRewards.ts:67 | -| 17 | RewardsClaimed emitted with zero on dust forfeit | Covered | unit/claimEthRewards.ts:384, 407 | - -## 4. Request Unstake — `requestUnstake()` (25 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Basic unstake request | Covered | unit/requestUnstake.ts:33 | -| 2 | Partial unstake | Covered | unit/requestUnstake.ts:33, integration/staking.ts:118 | -| 3 | Full unstake | Covered | unit/requestUnstake.ts:114 | -| 4 | Multiple unstake requests | Covered | unit/requestUnstake.ts:152, integration/staking.ts:628 | -| 5 | Settles rewards before burn | Covered | unit/requestUnstake.ts:211, e2e/lifecycle.ts:395 | -| 6 | Rewards still claimable after full unstake | Covered | e2e/lifecycle.ts:395 | -| 7 | Unstake after cSSV transfer receive | Covered | unit/requestUnstake.ts:148 | -| 8 | Unstake zero reverts | Covered | unit/requestUnstake.ts:80, integration/staking.ts:704 | -| 9 | Unstake more than balance reverts | Covered | unit/requestUnstake.ts:103, integration/staking.ts:692 | -| 10 | Unstake with no cSSV reverts | Covered | unit/requestUnstake.ts:110, integration/staking.ts:643 | -| 11 | Exceed max pending requests | Covered | unit/requestUnstake.ts:89, e2e/edge-cases.ts:222 | -| 12 | Unlock time is correct | Covered | unit/requestUnstake.ts:60 | -| 13 | Different requests have different unlock times | Covered | unit/requestUnstake.ts:152 | -| 14 | Cooldown duration change affects new requests only | Covered | unit/requestUnstake.ts:241, integration/staking.ts:651 | -| 15 | Cooldown increase — old request uses old cooldown | Covered | unit/requestUnstake.ts:269, unit/withdrawUnlocked.ts:320 | -| 16 | Cooldown increase — new request uses new cooldown | Covered | unit/requestUnstake.ts:269, unit/withdrawUnlocked.ts:266 | -| 17 | Cooldown decrease — pending not accelerated | Covered | unit/requestUnstake.ts:294, unit/withdrawUnlocked.ts:242 | -| 18 | Cooldown decrease — new request uses shorter | Covered | unit/requestUnstake.ts:294 | -| 19 | cSSV burned immediately | Covered | unit/requestUnstake.ts:33 | -| 20 | SSV tokens NOT returned yet | Covered | (implicit from withdraw tests) | -| 21 | Rewards stop accruing on burned portion | Covered | e2e/lifecycle.ts:449 | -| 22 | syncFees called during requestUnstake | Covered | unit/requestUnstake.ts:211 | -| 23 | UnstakeRequested emitted | Covered | unit/requestUnstake.ts:47, e2e/lifecycle.ts:371 | -| 24 | FeesSynced emitted | Covered | (implicit) | -| 25 | RewardsSettled emitted | Covered | (implicit) | - -## 5. Withdraw Unlocked — `withdrawUnlocked()` (16 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Basic withdraw | Covered | unit/withdrawUnlocked.ts:37, integration/staking.ts:150, e2e/lifecycle.ts:335 | -| 2 | Withdraw multiple matured at once | Covered | unit/withdrawUnlocked.ts:137 | -| 3 | Withdraw only matured, immature remain | Covered | unit/withdrawUnlocked.ts:177 | -| 4 | Withdraw at exact unlock time | Covered | unit/withdrawUnlocked.ts:105 | -| 5 | Withdraw long after maturity | Covered | unit/withdrawUnlocked.ts:226, integration/staking.ts:607 | -| 6 | Multiple withdraw calls over time | Covered | unit/withdrawUnlocked.ts:221 | -| 7 | Withdraw after all cSSV burned | Covered | unit/withdrawUnlocked.ts:37 (full unstake then withdraw) | -| 8 | No requests reverts | Covered | unit/withdrawUnlocked.ts:76, integration/staking.ts:730 | -| 9 | All immature reverts | Covered | unit/withdrawUnlocked.ts:85, integration/staking.ts:716 | -| 10 | Withdraw one block before unlock | Covered | unit/withdrawUnlocked.ts:94 | -| 11 | SSV returned to user | Covered | unit/withdrawUnlocked.ts:55, integration/staking.ts:172 | -| 12 | SSV deducted from contract | Covered | unit/withdrawUnlocked.ts:59, integration/staking.ts:173 | -| 13 | cSSV supply unchanged | Covered | unit/withdrawUnlocked.ts:249, integration/staking.ts:628 | -| 14 | Two users withdraw independently | Covered | solvencyInvariant.ts:114 | -| 15 | One user's withdraw doesn't affect another | Covered | unit/withdrawUnlocked.ts:256 | -| 16 | UnstakedWithdrawn emitted | Covered | unit/withdrawUnlocked.ts:51, integration/staking.ts:166 | - -## 6. SyncFees — `syncFees()` (9 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Basic sync | Covered | unit/syncFees.ts:24, e2e/edge-cases.ts:359 | -| 2 | Anyone can call | Covered | e2e/edge-cases.ts:423 | -| 3 | Sync after long period | Covered | unit/syncFees.ts:81 (natural accrual) | -| 4 | Multiple syncs with fees between | Covered | unit/syncFees.ts:234 | -| 5 | stake() triggers sync | Covered | unit/syncFees.ts (via events), e2e/transfers.ts:305 | -| 6 | requestUnstake() triggers sync | Covered | unit/requestUnstake.ts:211 | -| 7 | claimEthRewards() triggers sync | Covered | unit/claimEthRewards.ts:195 | -| 8 | cSSV transfer triggers sync | Covered | e2e/transfers.ts:503 | -| 9 | FeesSynced with correct values | Covered | unit/syncFees.ts:46 | - -## 7. Multisig Accounts (15 test cases) - -| # | Test Case | Status | Covered By | -|---|-----------|--------|------------| -| 1 | Multisig stakes SSV | Covered | unit/stake.ts:256, integration/staking.ts:735 | -| 2 | Multisig stakes multiple times | Covered | unit/stake.ts:282, integration/staking.ts:760 | -| 3 | Multisig earns rewards | Covered | unit/stake.ts:307 | -| 4 | Multisig claims rewards | Covered | unit/stake.ts:330 | -| 5 | Multisig claims with dust | Covered | unit/stake.ts:365 | -| 6 | Multisig transfers cSSV to EOA | Covered | unit/stake.ts:400 | -| 7 | EOA transfers cSSV to multisig | Covered | unit/stake.ts:423 | -| 8 | Multisig transfers cSSV to another multisig | Covered | unit/stake.ts:437 | -| 9 | Multisig requests unstake | Covered | unit/stake.ts:458 | -| 10 | Multisig creates multiple unstake requests | Covered | unit/stake.ts:489 | -| 11 | Multisig requests unstake after earning | Covered | unit/stake.ts:524 | -| 12 | Multisig withdraws unlocked SSV | Covered | unit/stake.ts:550 | -| 13 | Multisig withdraws multiple matured requests | Covered | unit/stake.ts:576 | -| 14 | Multisig complete flow | Covered | unit/stake.ts:612 | -| 15 | Mixed EOA and multisig interaction | Covered | unit/stake.ts:651 | - -## Summary - -| Section | Total | Covered | Partially | Not Covered | -|---------|-------|---------|-----------|-------------| -| 1. Staking | 18 | 18 | 0 | 0 | -| 2. Earning Rewards | 26 | 26 | 0 | 0 | -| 3. Claim Rewards | 17 | 17 | 0 | 0 | -| 4. Request Unstake | 25 | 25 | 0 | 0 | -| 5. Withdraw Unlocked | 16 | 16 | 0 | 0 | -| 6. SyncFees | 9 | 9 | 0 | 0 | -| 7. Multisig | 15 | 15 | 0 | 0 | -| **Total** | **126** | **126** | **0** | **0** | - -**Overall: 100% covered** diff --git a/ssv-review/planning/STAKING-TEST-PROGRESS.md b/ssv-review/planning/STAKING-TEST-PROGRESS.md deleted file mode 100644 index 1f87eb32..00000000 --- a/ssv-review/planning/STAKING-TEST-PROGRESS.md +++ /dev/null @@ -1,54 +0,0 @@ -# Staking Test Progress - -Local tracking sheet for `MR-3` staking test slice. - -Source plan: -- `ssv-review/planning/STAKING-TEST-PLAN.md` - -Notes: -- IDs are local-only for this tracking sheet. -- This tracker was seeded from scenarios marked `NOT COVERED` or `Partially` in the source plan and keeps completed rows for local history. -- Based on the current source plan, the remaining open backlog is `0` tasks. All `39` tracked scenarios are done. -- `Plan Ref` uses `
.` from `STAKING-TEST-PLAN.md`. - -| ID | Plan Ref | Section | Task | Plan Status | Current Status/Progress | -|---:|---:|---|---|---|---| -| 1 | 1.13 | Staking | ~~Stake without approval reverts~~ | Covered | Done | -| 2 | 1.17 | Staking | ~~Stake exactly 1 above minimum~~ | Covered | Done | -| 3 | 2.7 | Earning Rewards | ~~Rewards with 1 wei cSSV~~ | Covered | Done | -| 4 | 2.9 | Earning Rewards | ~~Two equal stakers split 50/50~~ | Covered | Done | -| 5 | 2.11 | Earning Rewards | ~~Three stakers, one unstakes mid-period~~ | Covered | Done | -| 6 | 2.13 | Earning Rewards | ~~Rewards increase after fee raise~~ | Covered | Done | -| 7 | 2.14 | Earning Rewards | ~~Rewards decrease after fee reduction~~ | Covered | Done | -| 8 | 2.15 | Earning Rewards | ~~Rewards stop after fee set to zero~~ | Covered | Done | -| 9 | 2.17 | Earning Rewards | ~~Multiple fee changes across staking period~~ | Covered | Done | -| 10 | 2.18 | Earning Rewards | ~~Rewards unaffected by cooldown increase~~ | Covered | Done | -| 11 | 2.19 | Earning Rewards | ~~Rewards unaffected by cooldown decrease~~ | Covered | Done | -| 12 | 2.20 | Earning Rewards | ~~Rewards accrue normally after cooldown change and unstake~~ | Covered | Done | -| 13 | 2.22 | Earning Rewards | ~~Stake after partial unstake~~ | Covered | Done | -| 14 | 2.25 | Earning Rewards | ~~Stake-transfer-stake cycle~~ | Covered | Done | -| 15 | 2.26 | Earning Rewards | ~~Self-transfer doesn't double rewards~~ | Covered | Done | -| 16 | 4.7 | Request Unstake | ~~Unstake after cSSV transfer receive~~ | Covered | Done | -| 17 | 4.10 | Request Unstake | ~~Unstake with no cSSV reverts~~ | Covered | Done | -| 18 | 4.14 | Request Unstake | ~~Cooldown duration change affects new requests only~~ | Covered | Done | -| 19 | 4.15 | Request Unstake | ~~Cooldown increase - old request uses old cooldown~~ | Covered | Done | -| 20 | 4.16 | Request Unstake | ~~Cooldown increase - new request uses new cooldown~~ | Covered | Done | -| 21 | 4.17 | Request Unstake | ~~Cooldown decrease - pending not accelerated~~ | Covered | Done | -| 22 | 4.18 | Request Unstake | ~~Cooldown decrease - new request uses shorter~~ | Covered | Done | -| 23 | 5.5 | Withdraw Unlocked | ~~Withdraw long after maturity~~ | Covered | Done | -| 24 | 5.13 | Withdraw Unlocked | ~~cSSV supply unchanged~~ | Covered | Done | -| 25 | 7.1 | Multisig Accounts | ~~Multisig stakes SSV~~ | Covered | Done | -| 26 | 7.2 | Multisig Accounts | ~~Multisig stakes multiple times~~ | Covered | Done | -| 27 | 7.3 | Multisig Accounts | ~~Multisig earns rewards~~ | Covered | Done | -| 28 | 7.4 | Multisig Accounts | ~~Multisig claims rewards~~ | Covered | Done | -| 29 | 7.5 | Multisig Accounts | ~~Multisig claims with dust~~ | Covered | Done | -| 30 | 7.6 | Multisig Accounts | ~~Multisig transfers cSSV to EOA~~ | Covered | Done | -| 31 | 7.7 | Multisig Accounts | ~~EOA transfers cSSV to multisig~~ | Covered | Done | -| 32 | 7.8 | Multisig Accounts | ~~Multisig transfers cSSV to another multisig~~ | Covered | Done | -| 33 | 7.9 | Multisig Accounts | ~~Multisig requests unstake~~ | Covered | Done | -| 34 | 7.10 | Multisig Accounts | ~~Multisig creates multiple unstake requests~~ | Covered | Done | -| 35 | 7.11 | Multisig Accounts | ~~Multisig requests unstake after earning~~ | Covered | Done | -| 36 | 7.12 | Multisig Accounts | ~~Multisig withdraws unlocked SSV~~ | Covered | Done | -| 37 | 7.13 | Multisig Accounts | ~~Multisig withdraws multiple matured requests~~ | Covered | Done | -| 38 | 7.14 | Multisig Accounts | ~~Multisig complete flow~~ | Covered | Done | -| 39 | 7.15 | Multisig Accounts | ~~Mixed EOA and multisig interaction~~ | Covered | Done | From 6b3c24f31a2640dc3fc8c8ab4d1e9571aaafd04a Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Mon, 23 Mar 2026 11:32:12 +0100 Subject: [PATCH 06/12] audit report --- .../audits/2026-03-24_Quantstamp_v1.2.0.pdf | Bin 0 -> 2298500 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 contracts/audits/2026-03-24_Quantstamp_v1.2.0.pdf diff --git a/contracts/audits/2026-03-24_Quantstamp_v1.2.0.pdf b/contracts/audits/2026-03-24_Quantstamp_v1.2.0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..14036489098862ab2073fb9bb92e9a8c5d27fb9a GIT binary patch literal 2298500 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ⅅOP#p1y}YjMC&+=@ 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°--`tlwckpw=c5dM3rqH#2 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

Nsf&Jp-m`s+ViS5Nx3vOd8d!)=~ztjYA=OHW=n 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≈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

kS1EzqUogKjn3mE$G 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≻jJu8m!_>emIl+K_ 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

Go0brq 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

oNhZO6k7w02HDBJjA!{||} zlMS=l4YpLi+>^|HhxvLL=Kh2E`U$p&M!MC3(V{F;l_COk{B)45FpQPNXD?=VU{&o= z`{~y_T5V>lekj2dOQDKTJjq>HkMRW1(c^ap9`L}Z*rbsT;*?loL9zlG zY_Z_#Q|xtVHEQ*K{fKj^`||)83NEjUr}12GM=9HtYl0k+IMz2yo(-0BJp0UT8{nA4 zB9tf{tS-uMgWFRVW##7wTGB9gZ?nL-yuWkJBG|k;KjWp#P2O2m{dUAMRYN4f*meX*Sk^_hTF+jnFy*X+Ql8Y1RcW1dP$@Im z$g`3raIA)F5dxUDO6i1|1nGb*C-kryjQ*}csv9Z2%u=yd%xW7a@l`izyzBb*A;~?x zeFgvom-!Y&M;fx2tZY8g?|I~#b0genONdT~Gn&(Yx!Q3{rnl+$(X(MwVT(=o6P~*G zI7caF|FS+7om^uLuztfpD-)s+=?+qyS_Y%5g9D`07DFnF*BM(Q@LK`YhsK2m^>nxz zgOHj+hd$1Z-$@mco{VG`#8GXv=- zcg^QD9#mFgwGjV+!cZBYSV7`i*G4_Vj zwhK|vo{4-`2fOYLXoD=?Rwz5N|1Vt)U`O-M>8ev{`m@^=Z6dGb3*r_tms&5x6|iOUTod?oSU zojyGzD^Da%JdaDd*Gay-5pJG;a;zJox3?T7el{ewt1?nraTYH2KRlOg!`V@l03@?t zb-S-+tx;^klvL{CInZUv_OTsOaHilp_4RwcANI~t8pZ_?Q>n*XRRg!|DKmAtR+^Yb zCPdyqBHi3Uc3uUMu|`=YM$8h-iV-_`d9;z4A0dS684fd~#%4>B0nuN-(RCyvj{eiC z9|IYr%tDx_5Y=`bao)j&i`)>Pg=C~#6s{|&eF0n>PA>ZOBazhc)|SM zlm0!k$-hr_WJ)EJ`ERqS4ZEvrTvVa%$7`CPZncX#*dsc@wSZ}bMRk@V}HK-(IAUt3^X+TTOD z=;)e1GsaNt_l?-h^2~2&!5?;TDo~dmq~DHRZ6X%S4xrD zx6GAdXL=cOz-wS#`VghI7We?!fG~z=)igPu+3ZRJBU#(i+3lHUC+}2@WOFlNtFB5i z5zb&mf=Zha$}RX^@}h&nt6ed&rU{=ux^`{qCN z@xKgrps`l1)-mG+>uicj!qgA0CeDbeM|dH_o{$AbNC=g9vnUhN zS~$V=DLs;f*t;ai7)_{gH1q;NF<3Pl@y*)cvT#suQdITvK(O;5C?#~o6=nxNXjCU= z`PcjR1%8}oogNPyyIk_kt!~EgBogvnBq9M-YpYswJY3?%i|Djq z4q}jr-kA;zvMy?6+RF23Om&r}CZT;-&+fgwvwmc!o)G%+0c4yI)30; zH8D)Ah!|@=)}%URwIe>x)zfuL@k7M`1CGvyHAr#yefHHja^|qwf;^_z7u>cU*45`2 zG>w?cn+tO(osb?G7eTeb@O~^Gh&J1Wl3=ppWO;N6(uxf`wat{TUNR>>1cp;OG3I%c zMwX97Es4Wo%s!9GHjk403u$^T^c`zmZvx`g0)`dEU3ckckrx7QeS3KZe4-WiN=n_k z8zz;EQ5S}bv9B?)**YyMb{!Y7tL=PN06+b5tXt)vii4*J$rl5^-$}ZR1h3$wL|?X3 z%V&eU=3T)yvW3C{NaxvXd32`ju9mmnI_p$%EkV8J`}%<+$*EZQw_S>GtC5=NDc#mh z=Z8k%{b>!?J=mMbk(%}^&J`PMkh)6Lj#*QT17rOeVdoT zo__GC&&l?UOpBgRuUQKpbB^ZoR_0|mQ;xdxxuPL0g^^dahJqqHKxPTsGbwdyG{Zjs+_L=xmn#03=jBW=Pa8BSfWOuC8q4~S04k2#r z>iYG78&@ewzx4+`#;e1}(IX1%U*e6AJHL-3zvs`4d{+mleospuuW!?Sk00;j=YEkN zx91M;hoMNs48+E%U;2Uz=)$DyHQlF!hKbIc(tKM5$_p!XbAK)u&co~d=priHm(sdX zaA&NOlq3#bZyU&YU1)74{#l|6m;xY_O`&PjNtR17O@BH3y0lm*ewC;ubLU2%8mFR^ z=m<+#9+s$}Wuu5c$^+lxY58;O-Q;r zMo$MdIS}Kd)fPj=s_Rc1J*FXkW1|6HMKESWStIcrVUfO-vsD*!88ep3Dn;_Fr%^$; zn&Fa)6+bi6Q1~m1^l<@;l2N&~81?@J1ws10#r0yO8dhV7n5yfcT7519rQ1kIlzqgy z(i(Rnju+tidNET8Eqxc&*Nd4;ZHe#}V>zn){^c!}zW)0D7R%r|UPUiP*@qITgxr24 z3Q5$Q%UExxCrzp#R;K;X8mQFRn6^nZQdP2%ee-Li0%pD2uBwSDoyiACr&iR*>oW{L z0F~B+sASz9EF6l4LTlL$Yo!u-WlpaGs5nqZ<$+aoLBWEW^2k=Ph?OyBYD)>Jv=;~* zrRsA5&237g;@10r@%zxwL;$f~eCGfe~w&4Yepbg)BRB+%( zzxm!orK(z1&m#>?!cH~q{3sPDLcIC$EKr1a8v8;OgGG6^o|M8oY^PDB9$4BE?Hg>; z1)swYu$o#b_m)-Z(q!nY`lE13=Pt0OQW}-z^G1cLC-ZE7rD<6_XRD=g1wCic5Tewc z8hs(9RfkZJFZKRHZ?KL^oyNm)3!M;xck9*Ozku0TcvZI8!k+fVn4oJ zwvL%|?mD_I5Nu6wK|{61g%{N?7mBtny0E2s>jIo=xC@5c8eHI1!*LOIvUl{s7-}K6 zo4Cz(8=PgEs4q#jfHH+gt~7n1ER+>IEzDQTJB9f~m-hD0ohFD!^Ls$^*C;rygx+d? zFsuI!%jMPQtgwhhp(!b#^10h2tFppkW7oztk0VDNSf>1zZIUgng=`YiKFJn2@v0G! zx7t8DQ(VA=c1nWS5b9h)+A4`PnA+M@upxUTTcrGO(|}K#CBc@MDGmC7#M>oXT8sT8 zlT-V!VuM23O~ibE(t<%GBQtM_^4*#5Ux)Ug++?mZ6cN*wNz|*%V|EoHryYqW(gXpl zJ(H-7$vcB)NOEQ$aZjcI6WKG_3h$ZBB9u*&t*%qCNKDA4)kWMOVH{kwSvejoj9IHT z%eh=6=9;5zo!|u_>W#{;U*6J?ccJR>SjU2q1b+)nWj!nnJ!8zg7DCwqw!RRuNlc;D zk~H{qv*8*Isq8*m{gZ|sm$teQB3Vk}4yV$=ST^D%r!_K=$@aK4glPs{#4@7|sVsLb z#ej@g#g_g+BukV=)zVyt&Z$zSxsIk2%NRuh?)hKTc>` zY+{6?(_CllEo&qhFK#TeO*|Tz50Fb@=-=PmwGzwRGYc2acW*CBBDSAdm~Cv@QkawM z+FUwCFury54vMl>Znf-~oPkjWb+!C`WNGpqlQOu1u^qZHhr+~e zr#6KN;7-5FI=9a#Vg;p~s;6vyt)S(1uh~^;`PKw#IGR|+vXlzedv+#O*Rg%p_NpA) zXYI4fv3+d6mAz+|-{0T7(aXi&J;+nNE2+9Gz`Gs!RPUgqP2QQU);qr^{p9?k^r!Qr ztK+@Xl`-<}Sq9U)@-^x+i?@F1$Bp`?1H^HHaan~zPRz&?&GUH36h%)&=Uu^t~t zm!0{bD<-+(HSeNa(fe~&FW(`KL3ctvWt)i8r7Mw7cRMM&)AAiyH%FJb+`o(pTTxLn_A|ve6iBHZbd@-H> z%3+AthYF4_`<%vhH0(p$eR`Q?zdj7{!z-}Yk8>S`m8{pt-N^c&Va4wnq43*~fgb{xQ#seQnwAn8_{{@A)Q_9p@UEm0Dee!EL9d zz{_Pir#@zx?uCV$bg}$nUBOe+ElM1iyq@y@g5S4%(TvMGUOV;kv<9dDIFD#nwY_nM z`a=u1FDcyLvyE zm(721vALw;z5r|!(SnqZIw~l0@2&NHe0A^vPvDgWe`A_uPGcQTam^Cwb7H~eqON0c z6zdy)<*~F6I_>)CFrMo)p}<{}Wv&l;5ORxZe8ThstdtjU+?TD5^%x$nJU0_7 zSve9;I0m^{*ATyG{|ejcx??_ki170;{9%IF^HZsvZ&klq{snDdGBo0LI||Jm7D(h<&BDU%BojE-44y+ zlzzkCE6*d(DtWGi(0VC^!f{`p2bpl;S2GF z)722le#$i{kjcKwHFyOJP(?EtI?RyDUe2Wukjb7;QJh9HY*JVX#y97kWQ8i?6Z1|Z zipD~=5{{(XQ*M@B6k-H?r5tOqjD=*QbZ1o%u9T?QAIUUzDt0RC)6&UBEc^SLySC}s z8|Il!&)&Dz%C8|EvU9=>5()AaZa)9$v9-!MJY^!N?akzJ49NV+YAWODq58Je!= zZ|{0*Z$UC-axYSyC`rZei;_4Ey+wOtS3F#6qfkA$;?E(dT} zi|KLzhcT_b4&bmh*b}7+ot;89$4%_Gvj<7?oA=f)+m~ydkC10NZ$fX6;)|Bwq0g*0 z=bxlG&Xe_h5Qp)3(nZcUN>{2EU0vS9i7t2B^&Af4mb;$AVH|j0=WrNL-}M|06A?sv zT$H{F_%;y4MWm8d0u76qt=r8KtmoYI(Hqco1L zltx*0|D94Av4v_=8ga(=9iuE@+d8DkJ)|`D^nlU`?|4UP?CBAuv8M-=#-28%u_sGu?CFluh>IOfN+0PcRr~FZ zex+aPh+5hvN9x+`cLXr)E5{VmUUi(to{x6NXr!^KCq|==s$;cn4R8!N)fUHngQxoH*m|njme{wAz;OW8U>sXeP0KM0w-q`PqFSt@E2?d?nv>n18I2=7U^L>C zXdHzPPPGjmRnJ&;eKabc$Le}>z!i)WqY(?tU3-3y(&&65tQ$}4 zn(g&8_E__lp|g52#sfwpmeFfGF&eSr&L`bEJsp#d8TJ~DEyH(|MlARXDbrdCxB)~C zvo?jz$yhaY_BX>Zm^kBX6)Xg3kF)3*Jf)ErdetG!ct>f}8?0lYC!Z;e^cC%n(x_kT zJe#)7dBNQe&SPqyIp3-;c{#JJ-$>Zm#IuH)+>!PW&AHB@h0d{GT^v1n_fi(9I> zF2bpfyJ)!W!9`9r9UEfR##}Vs_UI#bGNeW|ZWH%^J*lzfmq?9@hJMea#`gRyH%DsJ z_Iy%$tyNEI9CMQzd)=hQUW9;W`4t^*?aamKSyBO>x6v~t4Lrl6XUZ;kHV9(#16Ct~ z`yHzhQ?fIwvB!t3#vbokjXgeKHR6=&2du^(90cdW)XsbYv@_h7OX z>WK)1bJAPx(^-4Uws7*c$!cmbRWS+F6Ew#zVK{$d_o62fz#JtM#SP%i98{0AKw9tJ$JYy4OFj`Y<#bU~a5L9r?W@(DZf=yjShHEWl8d}%(~&82 zIanPs<~3%n8{5p-K(>=BJcucCA=>Q58&Z(trcn*Zkk^Sug&@GsMgiGMW{LHXY?L(#U_(oJ?);e8B+2HSI^Q66XbEE0zr4xs z!6R+1rI04~w^&!~8+pB5gKzBea(rgeD2vaq%|Yl!OtB3IeQ{>Fdvy^Ak(IApWarVht15Th216f8h3#GHvy!0hPaTG&TDN!7)u|kHyWMk&NFEVKL zj^Zd6dtV_>^?qf2fcHW2t=?OqQFjzaH2jZ5Qyi&7vv;ej>%9k-QS!c8hSU4? zHS#V5h>rMJAVuW2vJY%a>wORu1M%UKEa@CtVRH{?j$)oGf?Jy7 zn4gr4d*^sHM{``53q@9_j2)72U!@G59tQE{^YGL2BhwO6-r(MwC%KTxyc>QPTtlz*UZ$EP6Pu?h^fg?QyRAzqY0T1!w8I;m0?#q64}3`wVhxNNeqD zVO$8;BAI+1WNR@^KyD3rFS{*}3u$Y&jc`#=UP|h&{)24otWbmt;a(ODa^6X~L%66~ zztTYs%w#&w{}+Pbs!i^}yYFk?l8NRIPb`U=@S#D#RN!-@?+c80hl z8!Pk5Mg<|zsG?bzUk%nk^)Ehcx-V?IeoKvh^Bf7A_Js;+-G>RNbq$c1txZ+My6$RNG!Fs&O6fgx_x1h2U9UC731f`A~WF@lzyYAs;plu$73)>HwsPN5f| zb*e9j)|rT)L~Bb6PdcL$=;;hoFsc|X*UlF3MGo5f;`i?kM(xvXyh}ULlP|O zT-SoK&dCXsbb|lhR`|eHQ3Izi(0r4AnN0S#R9P|s)$0m=p%~j z;?z=c7tzERT;vn{>SE-AuP&O38M>$|=DH*F=U~|R&Vn*@W}GqXvjt@o4YWlE3F}V$ z`=?>s9-d-boWD|Pj=w3kz1|4%d8Nue{#Dn|@{*hX3_oAqa_!Bg6s~`LU@L> zE$7V|5=aXf;(|l8Ez=1BU149Q3kwmJR+5$;NM{b@4KDfadWUFRt`5<*+!mspaU% z+b04Hq~~0kR{D4-B*|IEN5?`Si5oJ3E^cra$Z={QaLB2Pz$T|x3t(9V6hKRQS_Nka zrd5qr2*{Y$>AqlEXCnd@oi#03>FiDbsIyH0s$#p7?Y=Eg>+D^wb$&sf={(4KyYn^j zoz5o-sI|^(VOr)J&xTm%sPaj{}SS{qYD zAzkPZ#dSeyX}Ak#Vhc9v381ynap74PM#TnK046Kl;rLUKY){XTY~zDVPb=VrOp7_1 z*KRH!?`%Z>#xj)9rn1?6AJ1Eh9B%U9nfN<=4IzB{JVczIBH|grMh*Ab-X{R>5-@&v z=h8JOy-c>s2Ecc=eZ??k+t($we65J*OCKvc@$LctWgY8FTz|Ql{=<8ho~OS*caPK) zWqECX?Mri>4;RQ@8{@PZH_m9s2)&=|zx?d~L8gPxnAN>JXIAHznANELCd}&mduCS0 zR1LE_rg8xFI(`;}N)TIIu9)%zW;LXD%<7oZeX-b>;-g}*5Z@JxjVTYPq#${4Ec6>566SF0Hb>YNLUc3B0t`a)y^) z8+x%Z0n0>Q=3+U^%djlJ+1Q|^LN9x@r0HeZtmI_%Cth_-?VeW+p|-}nxJz+L|BYR$ z{JPeRyGpS!%}14DA-<~=8&Q7kTq!nEk>7acRmaQ#-H#{c4n3d7KBq^OVj-rAQ%<3B zzONJu;R9YZ#CN>vh`Cg*C*{xO5w9BJyHc?b-j#}l@Ik3qi0?|plF;y~BM+YXgIv$N z>UD$lEBa*Tg7#N9ccowK9GkYyIl)bGnL_PDW*Qhz)uH)=yIQf!#(XU94{F6O%MH%BP1OJOyy{+G z;Z-jz^n2!2_x3WcdbQ`X67k*fs^NH*R}FIF_w{?+^Qs}d<5eRDKHybHngN`u#X@*j zEtW#_J+GQ#`K`wJ9lvm7d?NhE%z!+CeGC#bMQsgiN-WbB7aEHtxOXIy8_e z)j-EE#k7dFd$=K0`hsc(WJ+^T4T4PQ5L?$$+#B#kDwt zwL^`EWMhF+VO2-2I?#+ol1!M=YPxi?9vL<6DPrv3-`uqn(Byu7CL-U+?&Y}%soH)d zLM$x6HiqK%YBj&K%Hfu-e~?8+{@ZqAZp^9X{+7Vjgi~z?27G3^*$iN&thpf0D*{U$&a<+@5rh zbC1%I&X2Ax_byik$2(^pMDNFSw4KKnweX=q^vBVtNz?8t#j;W+Pork-J;yOp^g9~0 zn1m0GVmdyM!pQDf)M}0^UKnEwbSREtF6wG z%|VqPCuLmIpg+th{sBJ5(;AnT=hj`9@pAR(Udcj#65bq26UwnIyeYp4Z|1o9RT{c- z+&nA|agb^8j~xt2IyKaB)XcHzS+gs;LMC-bb{K|G3zTTUhD-~YNL`0as3& zLa5LTGV=EZ!R54z+iZ-PQ`9q(7sP~2&QT`hm}Rm+rFf!BzvH(AFzR zrR!`(mu^%99k|gG7~#fQ@rF|f1}08#1i*-bNh(XRj@3i~MNVM_JUP`~Fv}T%ATnnx z0^O`tEs*ETPw=2KQIt}P`U|F?7P@pMFD_uY1$mZpAnUEp)yU^Lmn6+_&TBQ;xjE?? z=MJR{t=n8(?fk0@iu1!fcFtkz7(34{%HSe^D2fLBEy$F7M-Zxo1+}`2 z7-DcwZ4vq)!QXw9(AKm1ttUFBru6kzeoDW?T9BQwR!?J56L*UtRT882O;7WTwIEud zaDgpITMKKXFe;EK%~D6N=kNe*L8{bE)dnDb^==@I_L5rRFbUPpDHk0sQxwS>aPA*WuTudI(N0q&k~^JRG2bem zU<0S4f+3tXFSOzGUT}%C55X_ak`~f&HYb?K*=5Fi+rn33%b9((v2(HeEle$>vY~_Aq1R)G}kFeBfzo$h86pt zo`vx7E+|4e&8^sj}u!ze6G{;!yfc(gm%Q>_?#cF@bTo1s{t`LHJc;DL1Ce$r1%{=?sW(Oq|5YVtGA^JvdG z&*e4FbJxPvX%m-!kDTW=E$6w7`)bk<-c^&1tskvu{mVtkYW)G{xwQwJXRPc#;5@hb zfb)z++&j*5E5uDbbDmp%ztaW)hWk#hW`r6XRL6+7f@a0XUAZ8jE8St64eX@wPxmQdVnqbY`_{QSteJ@!Z1$#xphxpDIa5 z>jTC!6#>6zJfn)o z9pf2AK<*gNy(`bwsVT~h+%cZHF3Cyx`*_HB?&AUDxsL~o=RO`Xo>4*Nj`2)oRSe^~ zPs@1j^N#VXH(0--Pj)V7e}!{b^u?!2(%iOFC28)5ddGOyK69>Bd)GPPJrd4g>!>-; zuH);Xz}5v9F;s6{Y*7t!afr0>p7BhY+fIyU)o~XIw>`M1sitGYtJ;{0#M>TS)E3hX z&bUp?|MiUL(O+UbD-!xWGoHuugPk4YS=;kj3nSAro_pVn=ax6)xg}xeTJlw6zP=}F zH5@9XM6FHgYVp33G(GKHNt#0Q1I9CA`yJ!C&U?l)vV%=4hHhG0$8K2bH8ThMmrYH{8G4g+^{^f>lp3^OVBM2cCKIVeJnn&$U0K zJlFn!@{D5fobRJ@Aeq-3E6()F=1eF^vN<6VKjnMyzAeW(_9IIUru)3Th1+w$DMV8_~b9uM?%rr*%1cYJY#11FCF0yPnnNdZf#lSGMDZoQ-9A zcmyqdW`|+~CKT8q8*(a_9o(VEcUdhMa?Y34mLcbXv08Cx9C}!rQ^1j^B8gMfAxDu} zl^#ip%^BSva=Mu{ks+s`8Cx3bxHM~YBXI+*VS=&1Ml0OpF2BztXCld3e;`luzGI|^ zBxY^bcKX9HR82bDbkTBst6Acz-OT=zX`2xAXF%7(N_`26>kA zkOSL%kP)r);YifihpwgRKFoPK?I8#tysnyE7PW8~%EaRG}@X7#Mk z!*=rVQn~8uH1xl9-&|+3ue0!13jn|NZ1NZD7KTt4Pdy{%ub?d!Lm)$7p4bomF_(TC=u8bJ=BZ;#R_u zi|aRCCV8~@fK_+CEgw`#=k#@|a=Zt`bnUe&e7HQ$rPsOCo!9iblytG^8G5_agj%kK z6vXoPEbdwrod>o3<+{bZ+3%dI1_#_?;ts%g3Rs;#-G zcJiuu-=<#my@lN=#m_#&r~ay4R!U*eM`8;>%Pl{6LikxfuCNu;2>fJUcDJQEq0k7-WM@knGIp_l#=$Bn-NbM(uwwA1}J zzwZA&9(&C|KY&dy)!Do3>t~#p_u~emaRX7`!Mv}{qO3N8uBOkc$0#$m4IR7tCpYSALfju?w5zEF20Uxze@4=-FzUHp!mMk z8ESv#%3lKNm)P$Ls`?(w%_-t3t?>#bzJ#T|qvs2-^u_bEUcueh4rzQ@9N(CZQif&L zF(6tx8gsB-v}akrV($d z+K=p=2v*a!28%r4V)=&mLA0%5`v~hvl^K7lGjX6*@3eGi`hC#KqYRr2(FjB@%VsF) ze63CkfM(DKmDq1qJw^hztwgIww2H?Yn2gHNnemk$soFU*QR|!T~JSyRofUrk& zrp~dKhZR+qrnqoX9#m9i<*R3Y;nGtdupU%YHM;Ku;eAEbWllc0KB}m?OjJU(t*EMI zPD|pIR=%;}lj()_@2Bj-nO|WSE@%_e%2w2Nv7M`o8v3JzM1oO2SeiWD035$&EA418 zJbqkEwHs>VUxmRq%X0?fC`W0$-*WXC&A$4dwBJT>Da~t8{Ne3|m&wG-_0f-?e|()s ze7X~Ad|C4$6!Hnk+rFP1{qSzPcM@t>lZNYVz(z`+x+t%vzF%J3eC-J9&pROF2XmMokO4YDrgaT4vtn*LN#)dBNK46dr4~wnEVMx~EvZ0ry^!T@J>QIG zikYvJW6)AUjg@q3*oYzpe;{j(j%w>;ova2aovqo29>4|>ovjIYE_EbQ(mF7$&sA^& zQaW3c4nrO?J1@kVhD=I?K_q8u_PJ_Zq=aG)^VWzm$*0aiM%{?1hE&ghOb*u^k;tP_ zq;$CEh;-oH6d4_^IpR7Rk7QJNr;W5~e5AxRdLYv}ASvZr8(Dt+^46<76V+fU9p@%J zmT&kQq}pMg)v=?nhdSL`Aq7vjn(u=Qblz;*(XmBPh`+nVkZP$q?VAq1DVJQ)E`&%q z$JE(WT?OoIIW18K1u`Wu>)`d4S5cTf%#dpN7*z9iy0=`lh<7_LDMN;07t*Xh*NrMaS?yF+KxVnmE zf8W2k;E#Pyk%B+`MxEDj!5{fBoz+prAKQS!6@P3?i`GSPeNwoBitD<Z?V6Aj_jKl};k7 zxr;$)(H}@r>PL)Z=o1IZ2#Gmml~JO}8D1H*)z%qj;jMpSyoHXnWTP(Rv#r6)wazif zGo1@rZ+Ff{zSB7+X^(SXtL4toNgp|fD1B)?=jwCkVr6ukE0$4oPFsiDI(JbE7Xw6n zT(nqvX2Xgoq>DbHxGqkSibuJ5MKst#;yAS;AK6UyF|ugw9~Vu<3SHC{Yuyq0b9n6S zol`ckn_#NCuG&BEo{IT-bLIZLMh_g&X{!9JM9-(7CEbA7dtPWseiK^iJ>8+D-YJ=x zHNQ;Wx>JF^sCj5cOC&v^CCJWb39@^%1gVy)QnUn_mb6m1)O#TV*wKt)N-uYC39{11 zif|Mjv6HrT$+fRQ+AA5UVj~K<9ZwlU<28lmPVeL7)B;S9PC5KxMSCPU^X!TMxF?&Q z=WEad%tsFXT{r_~dcsSPF(u6*mp<;zU55=4{H?Xx^jV{D zRX6`uNLMJ3?}KcG3~9$GyQ17~F{CRDN!N@*CF*)HT?iTCnqnRT9uR8PI~|o#c5yr% zy-}%(UafANAw}#>Mk65WO`$Do4rE#&aU-TtcY#DfOb|&uKm|+?)solx5CbMiQDJb~ z0be;n?~0Cqm`FBCRU2Z&1nF$CSQ{kS$yP^A3pdGc!cFd4@yG6&;a;=vuhSk0&`!-(D0d1eG2bb! zU<0S(3q?3%5WL}xMsSImmtMyR#u=hu9cQe9iNu%*KZ%hS_Tu9XKRHLCn9RDAjoz&D zQJiO;l;T0-%{FkfZcibmb&m=~ts~u-)w*0ox7IZ)3bsys!DZ|16<14CNJfD)et1=L zkwziCjYtapC3ZOgB|&biwX4LT3&AiM0Oi8w0#Gi%>NLg%Vx8`+p#3=jYCZ>081q`r z0IGfw00pr0mBCY$jehmZr-7#!!c+7FAJWH}c=8*=rxU+PN zKX`w(dzkod|6)Z_{u>2K`PML&@(o{L%6F1PB;T77x_r;CDCY)A;-Mc+37mf9HN<)) zkznlANusvbycOWRmI@Z|`YfQq>;A$Q-cAIGc#9Iq;;nC?8*ixsguFcqVp5AIcqOi& zu#>NM@XEOpg>2UGY;b2?l)^yk$`meIr?-Knb&m=`ts7OSY8~zdwbnH&{IxDzVX}4h z3s0M%pt#${4#npjWh864ki3mYiurBa(z$^Na0_0!NGR~iMNENLF19Xs<)X08b2NVQ zOlU>(PXSiA@+q>yaJLegqn7+$ODx2YpL0HVq}zLSYCm3%_OHpD_;_*Qr{%P<{HaUO zDbps3O{%!urgyo^@ktMT4z5*NPvTi{13y}R*NEd%<#*ttX|oh95gDQYouRgony))Q@3Isv665U*LKjpL&f(6G$(Y;&+Mjas4 zkjh*wMq?V4%*k9=M%@+Hh+;l!otjU_MiVMYfz^hE3Uz=W7el6}ML|Yo9J7@3Q5hdXoZC8q3Q~$-S;_;k?3N^| z)peQ`b0>33tK1MI_*+X7>9aD>Y7hRU5bnGNe;#Bz|G~}3K$>!T*KRPRYw=XNCIeCi zo$_-JW`dNtxUS9wDZ`3CR0s@sa;=*2(B;(3@|q4Zq*_%<)d4cCKBZ~{*@jZ0Ul}}Y zsb{5%2$|NsQhkL?&uQD54QX>00EsT1ilLB5>T+$9%6uR_qfIeBlF3mEYNVM>k*lro z@5bY7u5Fd8g4t)b$_HfGx3|Us)_!Hf5o`Tsn$qYXHs9pd<>VCCIjAaIxx-c`w!uZg zY;U)rRl)4Iw82%u?D#c3Z_SK!n^G0bsszeXqAHkGoi@2D80#1tNSj&}%xYr~1h1Ud z_CPSq>30uW70g;f4@VR0SQgWR9RIdW3nDHHW^J%@&0=S#kj){7O)>>p?7OquHnuO< zIv*j=blzmW-T58)Oy{4ZIqJ!pYq+>P#+A}V>Kfzf%DkLtU7g;0k zt>f+dyeNi?2cke4II2@M8(~BzT_6(Obs>wiJj=~1xRE{FGzO++G&@>0Yg{g@iWRPa z%qNtu@cc1m|zEjv7OIUgQftNiu=@jla|5>0;0| z;mlJG0$TE$fR_FiAI?)32eh(Ga+;3{JRNdCEAzC;hZ&w#BC!f;=Ynh~4q?LI(TQ|R9$lc4GC{ExB@`6=_ zCwMBoK$Rd5o^%ggnj(xslXDNXGEd`+UMHxBC;Sd-Wl0Py2&MDb+b?g>358lUO_Ob? zH~hU*68x;1gIO8Uw?cZxT9BQwR?U{xqb-JXuU~QB)NE)%+=USB)QxsFq?>uf!vfh( z2l4RLoF8BPX@ z5@#lYT%18IjN?pC(2z4vK}}-5gs{Y{JNs*6@`}c+Yf#i?oyf*_*4-!&v~EcOqjg{# zT3T19Ak?}_3#S4Z6r{LZbQZf^Cq?^>bD_CX9p%$ zEr8{M8UrjB`vhRQD7j`YHk|4-M*}fWgjQJoB!D&EIRY5vca;UU0ag%V+8497`a(7k z2h!nCyENo*y04!I!sb&DMh;F634RfU{a`}y#Tpjvg<@9k7E5?slJK&i<|iMOcfCt$ z=q8R(V>HERKf8n8ImPR8zslvATpu3t7xqh?i_-m2U8YYj#&*3g?ZY+KuD9pqpUrdy zE0yo<*SXvm^fa6OWc%4w70~M%FW6G3DvF{ArKHDO@ci?hRlT`eD43*?r9SRKyW{M~ zwpczp@bNl}|Kaj{&o%aX59Q@yg!pc0am+^zpLr;s-Ik|2zuv2*Go&c@U*o947p>@} zim)FZ;_I!+&xZKZOL4pXeI{;Pd-BWge$V&6K9nz(g?**M(huzCes_oS^#<1`+oo;3 zwOTLSukFtF^#fZ!n^}FlF6R_ucwWz`y;RRBhpzRU_#1x1dQRbn#rk$T8jhR!kAHjf z0xscDeI2J9qN(GQL%6Tw1mS%hr#ZE*jIByBr_h*e`HDFn)Nz{qVI8O0AJlQ0?Li%< z*&fz$n)PVJgt8?(W~FO=xsQp{z~)^Yr&);m=ZlEUe9V$h1xIE+>byHw65>=(b)058 zCXNqs1y5!=I=8?TN15qC9jBQd)Nz{WQ5~n59@KG~Y1eU@l%S7s{q_AVA%Ne9O*Y! zx6>Li3YyMViy0xv=$Jq=lqn9X@#6*^LYzI=jeev!`H(`RNRZKahD+yYl_5^5L$tKB z+)@gBMB-B8OtMwj2pV7M)hX-}NMsz1u3V*(CZDGS*{Z3u>H0 z#r7?Ctt)7-Z~CMvvR>9J8;P=t`F7=us%VgD74>MUfYq9EU zj)BP!MzbN~(;}@6K#Btut*t=Ts4?5BAmbWJ*8U)!q{iDuGjda6!T7yvIN`5T4JU}K zhu{ZJ?@ajJ?OeY}KhwD=ZI5$jyXnsLX)ie+som-P>F#;wdv%bUm)6mA9(@nI^Zu$L zE>5T}xtOxm&cz?qP#39GlU-EXO79||+J_C5YDX@rZj(Dj;It2jRO_|zoAYef1)4xt zf1yIt0xMdeb{?(I)*l@nGs~=48_<7PMK=2k1&VYB8gokt)vfMkN^y=@gGm4_z+TIk z^T9y|=VDLqRc*pX;W=Ssj}hx|rTRa!))UhH&r*KmT0K(ytYy-ul*1&?pWvf$a&cmH zMSmBjQV|7RN`_6G!JA1IW7SA3bTkMxQ#>=%(Lnmpg!0UEEFWZRZ66VzXy-&=*BmwQ z0tLUiQrQ!G>~2&$GRpS;8HJ4oT8iezXJj@S>O?9_VMcbypt)$WeFkNtf#R;jhZ&fS z20D$V?`L2>8mKr*rIQqnY3>CM$b^taYi2{GOh^lxltT0o`7&IuUxYCpa}!-4A9Iso^jR}3*35qCG^;=Q zdDE;CX)|Wrgq_{sX{vc>*UYpjK-z`Vtdj1|o@UWYhh=gdhh&FunpLzt(9@KLP?eaw zf&^&}#kNh6qR%C$Gfhzn(Zy+MSE$C$ve{W%w`Wlnm)gMOl}NQ9vX!}uYiy&Mytb(` z6OP=@KBrnPu2zfwzJDJ)%KJGKWk(MM@x1bdZ3Xj5v1_+8$Ef@q(<6`) z4ajs{27;hZ-dzkC!@>Wry)W5yB}cN{->=ZRfmS(Za+xt?uWQvG5NKpJaHD|AM*n}~ z*g%@Ord6EyLO(f0itf>H2c_wti08w~prZxroEP|mz0F;Y!r>p>K zTx>C=3YcU=8Tm^gbKaDZQ(%cH7^g%7lT0il`#`JcgX#z{%I#XpL=Y!|8Lb0K>0(AR z2}5koAt*JWWR1q>&kw8Z^Sj0>%xfC^!FN~dqn2hqrdXtGUq@_L^)GI$+#Dif4d+lA zyJ-g9SlBr|#uDo+8k23N+ZgvL7{&>x{D`wyViv{Gh*O#JXnfCyoS~Z<6`8`LZAwS7Mi{n~$aR%2&NWBD3JaH1rRjF?bf6C+V zXOwH$KiHF9+rxe1!!s+_UoEXuuBZLgUf=6|eNXv#gZ$}fjh>s~5Z?2x9B!fCatfT{ zK6?2);0sM1|5@02&h$h*rWW{71uwoC=6e=w}XK3UT5}37LdA zz-F=842B5RvNVaBfX(tXiLQXn7C18sD@5fi4F@D%12!8Ia9CGrTP1e7!~i&J@nnes zOiT78oCGvW`)1%-kcOj)KN6xA%GdEL3}D*zYR0?(XL~G(j!PY@jg~~wz_ek+47W?$ zR%Zzb%z@1kNeSSA&0@+K>X#N)R|{Da0Gs8R^h^Ep+eb}neNmI?NQM@N>2`flvq>78 zcLhq^U*`FM&AL>1kD5)w+I(Z6Gqp{IrslZHVr2+{-7YYI?iUy}o9sK8y_)YWFo4d4 zK9LAuGx1MW7{G2<7&YIlFaYgW7{F$7;*{;0O&X(U0Wi&W6lEbuvm&Qj0Y$GGtAK=Q ziwsfJn%7FB=C#tW-_=0IUQ^c__U>!JVIEW08}@B9%Chgh;xRiy8oAkl)CkWG`CM_> zxsj03PN7DYcCuFtYQ;i=RVzIj(^@%O(XW+Ajgzh9YCLUad_~??8#G3@TBEVN)vvYY zu$rjr1FNmNj$m!(H3w@suQ{v*(C=DHq1UuFWvw}^_0i|FR!ZN;n6vfb*6!&LS^KC% zX$&9<@iDi+oyi1b+3u@)TG$EZA7U!-ztz1EU&>)%uttRK`B zhxM3i#bJG`t~jPwCPiI7`b{g2_ISmC$tLPzyW;qx`rd^8aMe+f^xs17`&EZ#vD_ic ze7?BYr>MP;kLrd$tei@h`B$v}qhtLC39w-d6}1to%|AV+K6|;f{@2L`G+hnHej_K7 zv3Z=Z^Loyn6N8ene}bFE&~}3J^ja86OA!Y}9pd$L1W%^0?TOfrD9TS}0;Z^} zdM|G&ype<9jol%hq`p6t-#mA2c%+{`#j#wUVm-F`X2;X-SdY&r)fevZGMC4nd#CFO z8|R_Nemx!Y1zK*y`S56)iMJ@L^nYm|6c=WxZ^j@n%m-QC_wjzJ|sS86R@^o^+XKsd{IiAis|7 zikLdxnPKD8jx_9bO5(@<+?T`jalagx`pBW)L^nu^PX!d3H?xpa zA86ruGYfs|F`9Whei{9T<`@D?`>UG-m*XFw2#mu>*T|x#0JT3~s79pE2*X>j-YQ(9lQU(>*vn>zsl_Ym3o$5VP+4uXXzIzFm(${8y_n4Aiw5a z?kww%6(}^mnCAnAV;%b*xukUfG~XC#t!7|y$=c&X#}Cjv zc$y;(bRJR3oB*52b24|ily&AcXBp^B$P;-0rfGX3Hh|_~+Z3=|>TE}+q6kde)~Uz> zn+JVe4>*BJ3Zf_h5Ir{(T_H%i>MgATs_kJ^|8lV!s(}`oS3OtWx@Dt&B$Nga0XW{Q$_*cpw5aiFh0_=LJzcxB53*~uuhkY znm$QTXQ2r5C=)0erC6QJ^ur*ZpzBdSe|}gU2V(7jUdvhxzN^|BwJrR3?P6_^zJ|3{ z^un3D4lcV!Lqp$O_D{#pTFN!h)~4!|SlcTzXN~llVr$M-7_8YRp{dS4uyAQVPxT}! zh1TP!v|8V^(}9TQxA84PHm?@ig-`9aaj>B_3}Bj zTl*+s?rZI0j`x$FH-6bSQ8|i}xx>t+>-Dg?)!y-v0B2EH0O@8Ix>ecpsE1o+GtsqN zdmgr5$e*OckbinprGM1gApQJ{?j@Es&TJsP&gbpVMylVaI@}U^ND%Fh80t9KmpnRR z$h&Rov#k}}w(`-=`zt%gcAN32gN;9gxpSoXMmBB)EXAH#JZ$d}%j2z|cxvk>hoM_P z@rP~wJnrnuTR-zbbrZ2)dmZ*%|ADX4t3fI+ zThVA4S$?g;2O8;f*fl zTFEd>ue&B8Y`4#sgs^?SM&Xu}!q?6(T%>uWR?hLzaMR(rJme8fLaUwKSSKOij%HR; zjb>rWvzH8`_nPM<+~37WL}H3?S#Bi~yJX13S;nHY3joSMHNVxgVG+h;*vVC9Q(cvh zOS+RGJXbYHbyZTbx^%|6C_$O+rB`jHYGA6x=&1h1eKw2e_UHO6{WZ;XVvr7;d_%Se zQCC!kvmGcm^)#;#<5ez*ccsUTNx24ORED73iqs4qQP5=_<}Of5GDW&YfiC}rXJgJ< zl!dpQ-&nLQsu6@(Xq{{21$BK`4qM5>DzVRA*dl_c6cqWLl8W^yiRG&C1g5=USB)o7 z?i#ylJb`uTD6X3nvFdg~S^3sLsbQ_vO<-tj%eot>K?&=0WSedDUB2t=f?U&Cka>4! zYveJVO_JAf)@#1FvvV>;&K}B8I?Fl7+}T)}9cPPq5}nc3$#&LVq{4XtkskFI#Y&m; zDLOKzq{7oWQ&BFzBZ`;DHO)NuRpn zKA>xNlH)#LYZsHfJg~LjsqsKg?I!NasolhVz}8l)#v(xXabHf|Y~FI*2kbWP%W0Sm zVUGKN?c+XR$`ZXIu$;G>xDS|(`?CH9Wggp#`^x6yzOs#ZD5cjbVO0jLyOv;Fnmk_# z#`Q_ySAubpGw=ht5By5F3H(Y}1yO6TONi#Efv2T}Rbi#mSHiu(uY_byIanl0SdoUr zeI?wB`%1Wp`vC3ZK49y-Mx`65R;sBUl#tiy4~KmON#)y$`+#bVoT?yUQcI_*TEdF{ zTdGQr`4h)%arh6yr z;{4@QEazE81)T>LRbAftJuzSkk7GbcOuC5y|ESWt^tj&{*_j$|0=_?v>(e*z2E#SB z`<|ap9VRY6KhN6LE%?!M?$rR5f7>pPDRBpkHFzSoJell56#17?SBxB z?bCw3y9Wv>Jw8xK=MEH<$+*PyqYf0(#5p>&ojZ+EjK48_1L)kFY0G;<9vWY4S=P=q6E8@Ma5(KV5waBlF z322M#Toe=e=DBlGS4vmRvU5>a>KE8>Bk!6>qYDmlyZm@&lf@((7tKWRNygD``6gM$ zXW1Oif+qTApG<1Nc;lk4+&EyoaUmPi`c2xnkPYmKArzMlZVI-$EG{wM-DL0Sce}~* z(`)vX4!CaKP2QkBW;gkT`a0cYBCZ$jny{$j(MJ33Dk8AG!iw0@a*{u1o^12ooOn@WuZjLVJ^8!mtjjF(nCJ~u_>1#x z(10jb|K7P=BLuR}!rz=DNz9zlk9n@LwzQLzD<|68Nz9cOt9H6`lU1#ii`;1S zYsDuwUL;#VBUVoR@f6A2dEq_f7EGNa@GHAAL+~ru22JL0d0wO`i^tHIX`w z#+C{VD%;X&baiU1ah4ghR(#I1HTNnK)-9;$hyzh9P2V+LjY^|+Nh-C*cP;U@PEHj; zoS|Z*F!m5@X_j@cs)N=MtFBI`{iY3!`eXwm^|?o&tBiGSg|n((-+Mll+T&bWSfI?k zjMn<>;aadiUJK@PYeA)eEO9O9{^+&fzo{LE&m25ntQ^(Y zy({j`dSVyY-Vjr{d?u#yPM2DG$86d2} z1koiBAT~gUT1^fNLY2KzHTgIL0SKEU)&`rvmr!~4wWz1!lRLoFj#*72Tp7T5s82lA zfiRd(c_^i{4wW~FgTiPc01(!Ax?{9U21pyvd0NUY7r-91dU(`C1!@5&uD8gTuD<+v za(Rbpw#S9_8<=*>&cY53Z22qY5f5#3;LgH04s34W=W+>60up41WJN#m*?84*!QadC z3KM!x%SBJhbaXD9zFf%F(e+Rd@05fc-4XThZqc>pybkY_*d4c%!#m}F$3^t;ZZXB< z2bzT=vjS{|Il?`Uf1B~pWU0?}<^PCK0GnA`%6ktNs%J@4&Jw(>o;tBa0-A?YBDug; z6sSTDbj6FT55Q(v$$CT3j6YSyfX+x&l#wv?lA^VV+KT7GH|(PBpC9hK%8+cYsT|7o z?vrfUJf)H{+m{jUX8YEQScpp2XHxD3k%) z3Xd{nTQQqN=2jks$lQsol5|@EUv%D96_ohfstgf?C#PG)B+f5wlu$Xxt)eP7IV&>p zn2UlFkGWHR`K~h(a!qGWCXcx@Jo1>%K*{SkQ#N1R+B_K{XBvgZ+*{GfW9}`kOpmwC zGLPPl>x?^#FQVaHgUFC~BPwm);fP#%*CYb$-Pn|M@A6nHyl)ikac)$#%sX7sNAH?N zahD%|Pbi$9oaI4!wkBtJi`rb8_UCq<);!8tAO4+w6C^L}jd65-eD;@epKUj@r8j>) zrRw!q@1MHi#DfMK-=#U-$)b&tf6=2gRR5jmQE@n-e{lD`SE^DD&zp|VI*!PY?S6i! z*X$dAzFtW9Fj29jpL8+i>-|oyhjwLa$L-MWw2V4DPqy8h+_B4GBDSmDg z{mXR?iDeeBnRYc7WDQJ`nxG{sH(+)Z*kn2oHVj>oT|V)df=m4#{zd{>HP;$jrPEh` zSD@MlUY`$`_KVl|7{qf~Ms;rt6g}vJ8Je;6l{F_r2<&zp2y`ZK%CrF6uLB3zJvFm$ zPBhS&11KT^Oj89#asXjf;$>`rT6Am02qPdYbBxFWDmew+NM_+4Ol9g;fxvdFK!P-j za;g>3nQtiyNZ3wM2P;M48-}?Gbl;U=(p^)cPIq^WPwi7m9P3_&<6U{{-73%ykHpY! z5GB~w;dYBaJ1r8wyV;XK-_5hG2%JF3+Cc=TD~3geikSYG*MLqKWfACvR+czUyysfT zDT1t;oWjWJ%Bj{|1v({^6`NC3S=osqH#VGot^%F%%XgiTkZU?~GFO4l@W^vI110Zc zE!li=XYyo-oN1I*pfjR#5$MdVOpi0mGL6oF>wG&)FM{Dbf(VfKj;&Zhb3R5S()l8h zT$ui*K zlJn)I?Vn;L^rX{#?nOmXS30T1UW{avHs^ex>h z(e->IZ(Dcva$@k8j<&u^387pfajzd=kmchJBu8uK<2?nF7JSQd@_MG?!$COP>U4y) z)O@g_TxKfnTaX{GXY&TP195}uXX%~0Eymqw4 z!kmTf5ZFwE5>`ZDnlCl!69LY|Dj`|~HWRRzk1=hg(rnDmx!Yo%&O-4BY@T}w6(lg_ zvd&|6&fQEk+>p+>o2i-`(m8kI1G*}h9KCO*5)agtXw|Z<6F*|WECgXusF<{B*~}p# zv1;O*rdY5`Wh}#T>-jtjBcOSVFER^kZuN|)CHTx? z&2KGg0IYAVDMm&8z;uskvV#IePJ&fI!Zde5R5kN)@ZfPCqTHV!_PbK_da>8!;@IHs zPGz)J@2<~TgzC_~PZ3H)d2`w+D3d%<$0!L(>6S8-L^3XPj5_Fwahk809V#*|JUcpz zT#Fpse3!`>X(fZpn=e*?iZD>Bq-DV*?UZGbuPFU=Lz$@#MYu0n$T`)aOqNVlhbAc1 z_KMo*6{!Z;C|H>UomLf#PRiMW1o`~=VNHO3*P05wrZp;Ml9O8Vqt9v0 z6j!JRXVADroqs(oA6KY{i#3o^q3%rS8gpxOb#|t9t7r)TDrr0J*Mw8J%?G}Xnk zWojd5W7x25CG!7M;aw`)sS3PnH7l0s@AvImmF;l`u-G}*pn_uHaT`9*c#bE~R^;+pQIs1LI!~Bmgm8`#$o$rmii0@kr zDal{Dj?n7nIsU%$qSCNJ9d6Ye<|=%rEf4t4P=_hFeYi9Ca!27a2@|g{;=SG*;4lH> zL>ut^bDhlVY9qPrgWVB94F`!PMh?C;pJY!7_+N@1@*CS^*SfphO}B?d>vzoS=FS7k z2@QUlpY-G`q$um|;qLvrchw(nc)zg`#@85o?-Z@4?~&v7a2L3Q$GgDw+%9mL-8kxx z+669;lWIi>^+C5RwBp+}^k6et4;u0|G%KNKWxA8daU^4gYJ{rp1a;I z-;GH9bjt1*n%sY5|92a!yq?&4z7wgZR(-^9@=kKsL)+{!!%Z;qjeIdK5_&fN97JP_ z>da`KOqV_#4Y`Beeul-?FH8>us5`6qTbF*SyVssd0E=8;3u zbXh)mcY5tD2b}LSDYz5F9rB!*>-mW=1jL7fb3Tmpw&jSP_;|5xXZ7NV9xA z(@s0=fSp-_(+c=`H>7j4&`)Twk4DT*=8f0O{Z+4LrRimIoQI>P*<0A4-bPJ^H+u~E z+33CW)n;$|OVIc-)vc$+Y5ve7o!q|IV$Wx|xWD$gPZL_6t@N7YE54p|_6H~Ro#hz* zgW8xKZeJcpxQkh6q?Qbs`Cqzk5twk)llnJq34VdD>@j)rae#chrg>GUPRP!Fk$pJc zkJe|@n^hhgN3zLUJeaOE_ppWC<=sH-Z}s!9^E>)3^}6K{XYi%L2oCK_ znil4#U-e;XF9Y4L<)%>|X7mz3%gwlU45b$Ld7A;`(HI)ceDN{%{XPz`rQ+Dt1@T zt&BL||KM51+(Exm3J9EGxm;sTfi&U<{Kwxu{_TIHbotx=AJw{QsQ0y0t;rM!93adcwrUQ6p2V z!V35>}Ixr~@>1+$UXI2pfO1UK<`9 z9VG*0gaL}wF&=13kuoDm+3JdS?NoG=Hlpww>+3|&zy(VYhkG9!^PNWuoD=NhR#t&*v_ zgbg&&tu?s|fG8jFi==;i(jV6riL6h)nvlE3=2kCeHQe8rR(73b1dc&!8R1ou{(9Uv?ot|e@Bj$|GHJN`9>Ip+NPj;U>ScEW}(h_&Tvrjfwb zdUO*WHZVT)KH-Mf&)c=-+^qHf=h0B7{Mg4_e#}oD#2mP;4+9_)(Oqh z3sKdAz?x<5NPiN8jq3$j)1v-Y5~c=H+qq? zjJ4GubY9A3r)@c3n+p5VOKL#bFJ5^wrv|EeXa3cue?Zr*S(sn9_Cq>b8bd=5K*hS& zAknkJkS@DL@07iP!`l}sWVfbJ2FhAY8qnZPD~&xHW@ChTmYl7Y*>qNYPP{Y!A|lRB zh%7mWGR4lh9+6PzqC}LPGb5>Q;tH4BYm`mu-D4$H_Ks9_&bwUJPVbsojhE||d_trI zT&}55L_*=P1=#V!@86AvUB}RHlT3&i9~-v}tw||Q`dG`>aIL+^&7_&k%#ggbTJAA` zL}Ycgn+-@Rjff*(z*31?h*%1jM(ja}?@8%f-Y&oM$J#*l)49r+C9TyfI=}UJ-O9#E zr?r*qCd;esfs)iN(dP)S?O?w(|TH*_s9k4IoGDcbj7qaJ%|?v=>}#4WK|m(gKoA&KKUjO8G6KE+b5El_jL^&BY{Y!u~Wo;cx2Qp@(u1S@L<=(mFL z5Pg1_U)BK44EbX2P*GemP;j-LrGlL+al^^=)K~^IDy~{Dhsd7Cdkz9Whm4X;%NoV` zgEiRmx@K0)6PWp%&uZp*zLSv)$Qk5lH&rSwbC&og{LwwH|J~=u-|tNF?|+6#wi0(M zg@3;hhu?pYIGE>%MktM#{@rM|z5)GHjDfBsw&6cN_}|Dz$fy6_2MqXczkdKI7ld&A za!q~9yji*jS472opNI!*y0n11sD(-!9tE_6v0O+ZoE^G-5ch+xJj}oS^?(2E|Ng^N ziWaSM4%;OnMj{T4jg|Vq5M9|Cchu?;U}ZWZNK5 zG5A*TdUS@`rMsD};~IOmZA0`-qFzJH?hI5dc78wFVhrCEMLXGN28w&Ue|GLb&MWE=q7nw$g zwsabKUB*xeSp?g*D!IC=h=c_w)ejPlkSqzd zPDR_1XoR@eHDQ5&-Dg*9ptNov8X>MIrG9Ero&wCeO&$_-$SuuYY(Vh0_G{B?m6m5` zw{=&b+5=9X511B}>wA<|CbQ0ZW1w18u47Z$Ea24<1f)F^*H{D9o{2guz_fH&XRow2 zd+Dut23jI-#i&F8Lvy}rBnOyw@mn%h+A1m+VFaW_13mVCHK(*C`6~wG|5N zp2v&GPFIMSuiNTe08E&#SsWYRB{B2072A}U{Mrh5N=klhRUsuNzqTrq615|A$_0$c zudNz_MW~F6Q`N-leo^Jb_G`%J&kv{m@?A9(6T?2Q7?k-$R8a0rk36R{QSv^{n9Vo0 zR!@e=8AlmPXGZ6sJA*6J;|w#;qO;&S+s@RBSU8s;;-k)^SUGb}Mg-D1BN1HdwWfqS z_r|K=yr5`|`parH%Q;q2LFa%)RhP4VPfdA!(k&ko-nPVZHbb@m979b^hJFZ{lm^8J~W8%1C{} zybW{6yL~z|`wFUi7fri(|4v#BS~lp8yT*rpvwh_s^{q#n@G#S(_Ww}x%*YS5ien|P3?j)&n8gq=FzI~VGXv@`c3ro0jB*yT5Zz(Ck(dxNl^3&0yg~vy4FU< zrY8Z-3UgVFGMkt*@T`FCWsqxP=U*#@OTeZR1M>>Sr(qa(S1U!bz@}S7(_6ZtiO7L5 znbj~6IY?S?ATih_^V?t?#z5pX)P+;PyJbQa2fQ$KIr^lYO+_s6mZ+{@y5Iz`bYh!fokB zq@#IszPOR2nKk2!j$jmO*oi>%FNEKAzWU(s+s-Wdd}R@fDFS1o@Y_lX`g|e$7Lm$= zacdzfdpJB7!JQ(CLv}1VtuW&-J_k{SDfVaxM&C5*fx~>dVo>HPf;jkQjpNX5$nwH! zC5hN3pP=nSK7W2VEhoEZEP-6h*^GHtXIAeej#2?I$#?nCTWIq?{oj^&gM79hC_Gd@bHqHmIu*hC z`d*6C^SqnyHMs}+mz(Q^ApOnh`frS^A2(tpi{=BYNBwNx6M5-Ad1VO) zAZ3hL!K6)kW4s0Ye93v+mit<0N$P1tnMbEGy)Jdi=ql-|Lb-{!o zflZ!0TIMEzFFkBhxq9da8B=fu$sQCmMJGoV!^vC&1>W zm&{$?xZR=;uz@Q7y2=AE zTdCm~w1qI;jGTJaH?wUi8c3LKZ;GaJLLoo$QFycS1HpF(-}^NI0>T zfWyl7j7*#&NDSi?Mq(YOS~DtgN+|J@Q&bW}gG%Myb{$YBXzX=ZwUhk=6Lv8e<8gt<|34wz2LSmRl#F;k$JgE6%r$ zh3uhdSpP;5EnH-%zPnrT8za?d=gFNb1f zlaQ$~MGS>zHUz8k-*`+VL*M^SAz0gjKik$!tCt9>X}3H5<4|D{#+|a@{iSC8aoN>q&%^k(6`WL^-!g3B@s?qwbWP6c zpMy$O*U}aMoo_vN<#Dy|!@ibZXte)&v$7*bk>k4fm-8v!&Khu3Tz=e0;AJ9*^Sy=6 zQSzRn@i_G^FE=lJJ!ghWy0=;NANz0x(?^ZWzS^?y@WGEdbRM_3IK0%)Kk1Y~YsZ1q z9(K!k+$GhPfFITApXk;VpEqZDzzuZRGxVr!%j^A?A9kXBKmvB#Pc$9P*(s`9CxH2= z6VjPCI&QUd*azXLX@PGO5jM}7a<2d9S-xS{10kR4PI}m9H2vf(bVPlglb^$1x=wqx zeZ$MlcOjQ1L%9|q&8jab?pNh(`JsqE7y zJ{+zoDyhb}dQO-$g0}U(nZ$$bS2cdMldg>FDsUz zbzIoqxTs1`TFYYhL0Cwq@Tr45Y?j4qu_8TDzR(}&?LqcYJV8!-RfzW8?_O@z|FCE3 z11ht_cCJUhheCCagL(apH_UB*JZTXb< zFD^xnTh=;%HpWq$Yy&RCizjlOPIkFE>^yZG#2x;_-Kc9brvGJX&Tovm?$ZoBjk>;# zR^wEehwp29F6w%{74B(1iSrHL&X7%ffr9lB+kAf7$L*S9itSE20?M{d-bWql@?l@x!KQvz5Bh0-!QT3yg-0HLyf4-`jn#Aq-3{J=J0v=HP z0aUVipec3wqLR}0ROzs=ZDq381LFboE3Fzh)uI{RWaGhlph4HOA8JZ70#4I43>$&a%PW1AT`!1x@Os%7MS2xy{j z_IZv3EYJn}JaHl{@UO=_n*xfu8(?~V)lj+S@Ehn9qkJ97&y;??Hz>^GWoL=~#%1A?DbCh?29m<_O}9Niqg$tVu?27$tdN zb5iKgD$R+a$)m$9&MPz1Os8OBN)rhLotDXuMQr$3tu-%TbpFP9Z&MWMoQ_LWrpVHX z9v8D1;ijX%yd|pzbVS&kvd~##mYYnq;#0>`tOClsiHh=H)cZg_7n)=JOh;nwIwjMg zncR`ywG=sB(3luHwOK06(y(ZQpe zwbHIsL2c)^bYTW`l2AHMJe|OlP6wk-vPzfJYAb?e&{37v?mt@DZ%j&bnP>GAhk5YjkCUZL}TVvlc( z#kn1bYw6BEkzDJKry~;uu>MZ<#Cpc1QPzj5>RDf_Dmwl0drqxed3UBn zj6S+-GqzuKo3ZqmqivD(sLONj!-KuA)nUCQ*9`v@5zBsG?g2;R z%X>fnI)8q6{`{WBm}V3uN|75IITsq;Hf1n_8gM zx+WNMJb}%qrlZ4ZqF={ZIRO-_7+|QdD1yOc0YgNkSLAh3YE)j|^_y5h0YiKy*d;Z& zHj>z)JSDOYxn6fDQmCevt4Z`)g^GW--CYZn2}_(Q&sV6LSmIH6k3x0F5-Ijg6Q`*_ zS!HbF3~MT6F8ZXLiA@#HTl9O>bw-Hp_b54=C4q(H7A#@nJ!e79poKZCJI$= zkDiU}6sq%A%@%Qv)fKe)? zdF?^PPDy^O0|b2NiAwH`{|MyhKz~EC80!FIId8 zRg6_9XoG6Y^w%nqgDTL{#fmO4>Z)Lb9GG-fFzNu5x+)m88B`*doPrU?X}v}jfl^lm zqppOZt3u?z*obBM{P|%`fPUAS3chA@MuqPl#3ZTt(dV>gO5evCwDsoJ^ywH`6RBfq zjp-V7Yj$;hta;XXw1#|6xV88y8P+qX1X&+KvX;dEsIO6>v_46N*Ep{w<<`roK3H$4 zdSm@2=~q?1sUB7}(RyOl*yXj~vsCNb{_9dq#5f+R@hQ z>x%DiDmn$H?71dy+1yW2Bp;nIe&K|*|7G3>gmqgQcb1IrImdgMwf-?@()Y?GcL%L5 zm)sny9Wx4^%Oy82^F~^v9?#GsjoMDqBK7nFEs|b#Td(siE7q>Zhk?p*z-;roelA2L zARUNk+j^ADEk~qPQB;t6j!09Z#y?K7XbsZ;h{L~rrk%h>r@k% z+K*^^Dg~+kh;*{5dI4!bqD`-8VDjJ&B+?v2{id`bk&a&_2uyuQq&1j6)+O+0X6oIQH~Ea-*sJ9M5d1x(XSrC++&>|@ z`vNVcj%Xec*pO9>yh_a6y1~CSP&9ccW`JVmUJ!O9fl1Q{8gpt~mbtq`H?so_O(=?) z#+bQVMRGF^6f2-%gaa6kvBH$1N*LBueF|KpUvoQ+xp4Ow+AaLvb09%7Bg4(#iPEmk&P$8j*Uipf zi`@Us&NP;4S;SRBVsLShdL{ZEz_dQ$!yEq^Ug{)8vk)~Jfj9J z)3Kb>mX@j5)aey4?#pL25d8(|1&x-%uCWF)BMxhJV}owh9?T5RILOu1kmNFNoWv3> zqeIWwF5W!J%Xm{J%n-PMHG48b-ayJwdSgnXuGV-NUYQ?nqGckzIoB!omS2Qp`iN+x zX!?_A<;^*s7BAjAiR5}uHig`KJ<$j6A4PGzFC`sQU%LFRXruSgqPEMOziBD^V^|4g!tJOBniO zd~6*DTskyIOpq_KXC8k2fXMQfaWiC0ueeRx?dKyFW&^u6FyFMqwrz9$bTBZF2`g{kKRzc9UC$zK>RyQ_7%f+yT&B#2NxTM%;DIjbDc5Gv z;SHTe@1EQlI?Op0&nv8=BG#?7drwp55F81ZP`10FL4r!&){^(c(0CD> zg)B$JqDL?F=xzQD1{CjEjiqvte`#9DNr;&vvhM5)%Wa(>98ia zWjY1AXFA0qW5;wli27#FbV@6n9n&eTj&@9^SXtdLozlWA565)MD?QJ2I&!~dIt93A zItAvLPJt-js9`Duyk|NcxhvBtK2D}n{IO#?<*zPA#d$fyy=d=jcpCW;J<%z>N*SK} zkzYFRiB4&Jn3HrdO6ov5_DLS{J<+L7j$^dcS+wMrYrY*%rbvb()Km#_;!5 zDwgR~2h^F?Irh#7%QQJ-E%WKj`kZ=a|3yfgpQz=A>U0U7^F1P?&PS0j@4Okw{hsQS zRU|m7Q`V*I9cc~oy^YHy1@%;?s>#cBzk%wsxARn|qvk&!)hW(&3sapY;J->UNeGLAkuiMFQ=LKyz}#j@9f3i3E&U@YOWQG>V(8i^j_DK_nj2f@NnmM9JEl{h z*oLrNmPFc2p#Zi9Fw|4BHIzEm^R0q;< zj@mId{G@Ao$bqdHoPS1jZanp$=8rwuDZsiXJ7w^O>=ZD1Ms`bf%HWRdl))RaQ^4p_ z7%bT-gL&AYXRMCoxlS4OT&Ijpu2cLunCp~3TCUUe-6cosnoHvB?U!uM2VEk(UTDd> zefOmmYnYby=y+DIXEgN1QJtSnt?iLxXN^=k?9hm?trlIG@=}_Ix)d9iH-3=R##hXN!Nb9`ok8-LD<* z>AK_(pK>F7H}d%RJEHOX4-^gaG;@^i39q3))tC9B*iRu<_t{T#Mv>Kd@>Bi(Teweq z{}=b^KM(h5A5XbY6FQ{+({P`T?J4&uvNyxOxKDp1_vr|R`xNt$g!>d6al>(+0_i*M zQ^q{^DX@0KeafikK4py7C(0rRs7l7uqMKus(nTgM9kAlLPZ`>CpEAlnRzf_+=XC)1|t3+Yn9HQNp_mq$w?fz=)HDPue0QwI6RW(rH)5uXBUd*V|DsYYiqpE5=@I+OX7u|4xC(7t0nWsJJo zTLDL@Kli`4s!%#N%C{<0Xh^+sm43r~%BW{P6-<~<@z)UMQ~qq3PuF)B^Xad6o}<0wPvtSAk-n&4?}WqO=hmT7bbT<68< z@>6_P(oQ9CV+=9DWO@TsZpcp=rIX4@9mg10*cZthFr?o!M}EpEa)Bpf9iT+CEsOk= zF-{0yBzTN^@>9k<`6;j{EcJ_ik5OcrE}A~ZumiOS{TSOerA}q)KcHbpe##h=$QnO3 zf)vj$@>51V`6**zSRzBgLUH7$j3Odiw1|We`6++;?IS1s{E5$!&CCe?=8Wfct(-UJ zY_vB8$VI^G@qi%^$>ue34l87tFATI+GcGwtih!CKKVVE#X-7J9>NmS+nG;|$`jWZJ zIZ-Kfce4zXi>{YE0OR89B{#sBo6|~IMsoYsIP`-o;vqAIoM}pIB@8@ND#cuK02E+bBWT7P7?;l5*$K37$Frle2n^Ae zo$n9|hiO(Y03x2V0t5_kpA|J=9F~hv@)av(%d_Bej0Y@{oCaY;WsD0CR2iC}wX-Iv z(gZG0wAw`w1?5%^fg*sms!ABn8WO)*6IN9IY*|s)cdeP=Yc^+4`0l|mqprtX%&6;i z7Bi}SaclN;h^%?kp|pl{jkz_sIy=@h>nvI$KBwDSdzB086;yr}HL6HjvdpMUBCR`8 z$+eDa$+&fKstwi^s@52vIkn6BR#n64l_xnWEApG7@phIR)rN@Qg^{amTg+UhaG!k( zJLq_i{|A901$PQ%Ze(+Ga%Ev{3T19&Z(?c+F*i0KFd%PYY6?6&FGgu>bY*fNFGg%( zbY(;f>AiVXgBI8%sfx z|M2BMe)*5z`^m#3mmh~oDL)SDv&ZLm;_S-b{O|w#Pygv(|K-2^>0cke``zFChhP8K z-#^UbZ~yj}-~amMmp^{_o8Q92hQ}ZO;fw8zvX9a_U&`Z;fBy12V`BK*#~=UiFV-Bk z*kTGg^vAz@{LZ)(j8DG*H66}7=SvxX4XOR59L{-Tvg1Ga5ZfQ(k)3mOJpVN}vOkI` z&gJnL?|-3&N({l6H2#nSH57cQw%XTCnM_T^YD!I`Dfb)yA)DyJpvU}MqyOQLU;gkP zem!HQm8{GwD{b;e_QB^US(>Uf=GV@Jd?cTIbaC&Bt={J3`46dD?#ofF&yS-9>mEmq zt~MRmi2w4Bz1P3~^WXjb=&+*>+Y->HY94>)-#IsYXd$NDNdCx%Urr_mruxvH%hkEw8F$nQ zT0D%kHWMwS)LxDU^ehq8_Xk5RnO`12pd|QJ|=x zq?BSJnlb!tt-*EXCl#T^^I0s z4TEO;+x2iZ7N#1HZ`UK4Wcpal0}}4P{`AEg{{0QV4_|$ycOUq7F2Op{mN)jWd3MCc z)`&e~Or?zOHMKaZcV-R)@3_O&G~N!ezYU2Q?%vV=?hj*P5gY``d+!7D+O~H+-X*r$ z!}<1HO} zsjE+o7K3+TD7K}SQw>A^`*X$Q;)k8sPAjDS;V7=qt2Nmeh2=F`tu+e^^`!Wzy_3kY zzkN~9)+X_XYO{jhUVR*kW2SG9PF4s#KEzO}J!&&dG2{x7dwO>;r@EtCjo@L0$ereP z1rr^~YRIMfBgHP4A-@W#TP^8|-=rl&C2BaLEf1wR6^$pYVin!sw^z7dO8jt8JnZ_`K8jsYieVR)JN29VUkV@AQVSqIrHP(kRQqbD8+>E%kS+DZ%Z(o$* z)3ZE51kol>B|&{%O*+&~H9666)HF5*t|mNUk(wBZm1+tdJQq_f$wp1cBttcIv#`}1 zPgOIjnJy!4$7)US|UK-(z`PdE1DsK!_m>^Sqe-M_+4q97(V>fAD&}pTP-T0Z>*7S%e zqEzXRfriP1y|(U;fr@FzN^c^z>1lXbZQhQ3B1_62^RZ8P?9KVc@IE!NX9Rx?G)$uW zmF|!E*r!|NL&ZKVJNC2E^v7Z-!yk*Gw5gsc`1k6M#ZcS2;m22FYo%g^sncJy?aAt$ z^>Ju ztmsZ?1ZY_K+0TMU2HNhC#pqX$45ZZ~0}bwpRUR3rsrt&!7JM?$;O+>QtdUli48+wX zYqVOcw9_~&81JxUfBT}IrCDCJNvnbUIJ;!BkK~c5q0lm<20a!m#U5JO6c=d)RQw)m zrIHM-s!D>i`YKuTGOd(?*7L4ArZO!z88jvHS@{R7j>3^>S{vD~?G6X)H#;HSH6cq- zJ{ehz^2x}y0zcQ?B4vf-Kq*TlM~f`EIb~$wwNKr``q_b#vjjVOaz2?Zp`3Zxca$>} z`TB`@yl5BJ*gQ?D(?a5x_t*1qYr(N14IY{>z0B70_)T{f3pcE-Q- z<hUCXFdu(RP4SvX_l?Vu{r6THR2m{bJ9oW(v6R| zvCu%R+dlN0;lE&B3nstr0(CkZHQH3?8@$b%4{ys4@PG>`Oe(x}@n`VPP{ex_|uod zuKME}ek&&!|6ZNo(iM7ffl6{!JyV;LlxH7Xp5B= zvc=Ti$-@g)&(g}O+N8BteVyH4*-LVR)nI7VSHm9ufnpGO5{i%HaVU-t-$coVyci`z z@^+N8*)39PLH<+M9_prlBu8}3e z&^3}YJlUC)L`VmRRbE#454AM+ug11TLshT*6!&$RZu}5nkrAsQ*-kTe z>(Z*?KW9D}f_F_Dx7Lqus8;r0IKdBD-k~>@O~+vSfAz zw{aAD_vmxh{s~T?nYO9Z9j!d6VYzY?$r|+sMDJttEB}*-3x5J)*I&9%PQ!jR(N|2H zcMmILgX)~vsYa^Qxn<0?-$xXs∈)37cEmGKvpxhCVE_|BAvoC=atq^N(|pr{9Y% zT?>s>Pn;rVZ=*h{t_|FZ;vu5rD5FjdYIeg@&kgnUAt{@qR4DK9*>^URoWNirT337$ zW>RU+A0i_9bmidLwb8NSdaTT;S@`@RCvz?y z`0+Ak#qUa#134jC*MmAWa{R<_F$nb-M7}ixtfU-OsctbX>#*U;83i7WwpRD@2bQ(Z z4K1&g51C=&n{_l{vS&zp>`rW*fLD^wY&x>^?Daa&pPOB1bgnuc0=QVoSX0(<7Sld$ znlxxEJQkO3YUK-fq4H21nI324|Iy-5Nw-mW$oXzOeE=f)EK>upd5(E#*#8A1e*&~g z;V|hxfo#WbgiQBC>r{JeMlwPC3Sxd!{`@Oa({INC(9>dg?f zbR#gpz%(F50^O7t!M_e2+-*=LR320Zu>bAf{lC{^|Ci0H z_oK7icX039u>%yj{qM?{>|f$rE}1{16;sIZ=qjbK)MVdPLiMlH0p-3R-6Tn2d&D{F zVO+{rBViW>qU=q4O=4q*8ml#oXo|TO-Mdr z3~w@(*I68c*GtF>iFeA>=n+I1*(?P!0O%5r@1nkZ9c`SdGyu-65dHoV334^_9f zA09vj{`fs`M9)kp=F7wwVI~z~a^pxEFT3`XmgVQ5A$halWpd{=OjHCek@m5H$nhwl z0*3Eu@lJrB5&Y}fD#U|{l@#j(%AF+?6>PLb?&KauL^GXP<{%oR%NeX;k zR}&O~(Wh{4)C<&2Ebe!Oiy9{xQ&SmGGjlc{`!O0H=ntXH9Y+4+?kdrQtj~J7&o{lA zsBg|DZWl^7WVP0=UK_GGmHN<#6C|Ej@`W@ZR#`r5{Z096JhiljwWX!gk;KQ?sXa#a zeE?B*M%v2VdnHlcbK^*Hr)_`b8Cyc>yx;b zsNk_Y{K@KW_L&^g$-s%dlwS|g?&XCH-)QHjOSWbr^~-Y^N6}gjDiOboV_Xs=*@XsXy9Hz*BQpvs@nEy0esoNsMv~ZJ8ULHy&A1{#lm;m)Pm`Y*OZH!z@ zGRAk&O08!?bvfZMCGE54}TZ6S+XaZr@MsX0YBop z7UhBscQ*uY&6s|`WWvlp|Kl=rB@8kgNnbsR8QA>kAS10RR)`*AILdFR23dE@TE39x z?&uu_YwuXxA_iNBl6{%EM@O8`+LCJ0&dN`7D*M94IHeZlSR~0dHDmbQy$$Z-tL|<_ zX#L>MPaHC<(0*h~(R&bJ7+Dvq%^pwf;R9AazGXlrUx3Vqu{>k{7i?r&gb%6q{f=P#dZD+{T*`agtbXzsr%dSvVy(`sQZ{Lqd6XPqe26De~=bFlh`(j zv+I~?#XndE3fU^$yIqz*tCHt|xL7GifwAkwgIc7IJ8_D>{^HJa7LyLC*8bvS!-qY+ zDD_C8*Wz;IRG# zWwbXBu$(#0po-yzH|jv1*r@^P+^yjS^eP}exFpeP4eP5I#loqS^8}%d@#TV308d zu=wUiEa@_R7AK>Lsp(BH7apEtPhohZAi62}1DhCtjDA}*y&@_1k~Uae>)Wk${XSmR zn*WA+WJsgDIUd*uL|E3zQ-lK3hX>>Kf&B_#9h1&{LbL-fHB+QQsNT!x@oSWwIp4l1iauE;rDm7FctOR z-Z26_ktla4nfas>`gM07nlH^b-0aThG~(IXGsRq(22ceIv6IRd2Rl7DE~fXN)>6X; zln~1#h%#6U2ccVhCw`r4?9URctB=bSeT6ukav2!Ul_~q(Jk{n1>e`jH3%wm&)jo2O z(9t$a-cu|=(~+;m56+G(Lh$-Gm~lR*()$t|q3Fm>rXY|y$Be{JNGu90pK(rD#(MB9 zUnXSY;cHFMk;YWFIqN{mWWR(u4BtaeS$>MFbV8=hJDyy*dL6>-Yxay;*^gxso($4G zxaODZvK7UqS*enIVefl?%IkSlw4dh(aEQ+g>#8nJ3FHR_HCzbI^5f+zU{&6&Pq4<808n~-JU-_l#)7`O~}>i)a8coX!| zU&KK1{#DTX1yvkjkz2~D+q;Z{TqLuLl)0i$-GffYR7Ap#Is1>K314R&LEy$`M;+L3 z0%1S;{$Zh_wciK~_4~0J+-)%BQWu)dOtWe{mx&AVmz@hnq(vGodm#;odl?Nx*R9f? z$-lVexdvCMX_=Gzq(Lg}!&AGvtD4(kszTsvuJOeLF#G_X@i7Gg5eB}xuRUvWlWP)g z7bcy(qfDJ9Nl+0&-!EJVJ||+uh}-Bh&M`B#RtdcdD3tZS(=km$Qsj<(39wXopz}~B zia;}bT>m90-YMdr-M&yy2mF9A=8gdT+hd3^_e)nqPUDfTRxu|@CU%A)QAIo6*PsPtNWW{>!ItR$a2&c9c z+vSS95W49eplR3;|G?5YL^@TFfs9Ythd-_I6jh(@ke9VIy*1KJNI1%$v;OGT=e61y zTA11MSZtNEM^2@u8~x^WY{>%i;VyMA?ENsj!Dg{dp#4EbA+n0``j1a8n$Dz-#}vfh znL8-6wD>T}#SP`$%XrV3qid~hrZT!NsPq`WHnMs{K&R{|V}b-{k<&!ep=etRc(>~% zbah2jasILY#Gt#A86>t+RCMX+r}I9w>1F0{^`*CWb$RZXwQJ`wG1Z8esdu9TpL@_& zU_b-?;(}w|J3iT?fpc2*-B@R+^PY-r_0h9kIrV+m<=@MjSNK5ZCLHRvmco_5kqM|8 zpU{UNzm{q-a?wJbWS66BHyyZ4!^x}i{U&s=r(3(!69gf~lbU=ClR zPO@hXK2pc`DadfIU(o&!O}Lz;LLVBKxR$h*$#<5^x z#YeD@tSlA+pD7D*hC~QP(tJ{2FjKoH-r65)(m)^SM7%j>fB{bgXXu;T@)U(fzcqk3f-!zAKQfxRuZ; z&-b#glZjPhiVsGM7d`lCYAy%!B>S1x<&K3_SXT~IyGGD#f(hkmThy;B!N!u1f}(nD!@ zTErTrw+A4Jf4uVfblcIbGew(#c0rSNGHbd52w`JcoI_;u6JAS^r0cA*)>w+Gjne^?kh*Tam=xx zoPZ6c z-VUR~m)pe&NrqhiQ97H*#?WYuFFG9fp}DIj<Yr0Qz*sVJ9 z8{>y|4tPy8;ezeXD>>f;9zw;|6WcVI!phvW6D!xJ7_A^vjAav3jB*oGAP|^zIa^C@ zIeSscjm8>@wV5)>+1p--yyZql(sWSON5d9fWBUMuGFHrHBd7|>>(nVv$FRX1 zzKAv2!x-6wzvRj;5)(FIieaquH!FLAS5kYOX-Ve+W5^i3TYbMvPc=v+T)>etSO zHH{fLLM2G>)~$5`(6Ajd-w6}!N5Szp+O**pcFct>u==Nyu@#?iJlj4`%BKHP2P1a(kW; zq}0b}rR(AG3g7zEr-^MGeULPO7Zuk1UMNi7bcYBMJU@hc( zef~V9{rSwu0Yfx+OuU$^xT%yZutnnFpv7e>FI(*3fF~^L;ecvJh1~g87Vv@Ju3VNp z`@=y~DJgfxhcRnqVM0tfp_GROsvG(6o4FLP1xPKHnSi2@X$(Eu8bN8_=}uixGc_uL zf9IHhkc#)(Co7`=C!pOjn>F=_|5SoPG5?9{OT0vN)MlV~{?Mn#rb1lVwNHMm*LHZy_VOCMI8j=3BDzvNa^=^TYC)ZCj5i^0o@-qGWwNQ5fpA&I1G(h-QA8z@ zmip=_AC z-avdK9y^AqtZZXrk26^n;~3frUXfLsa5kPD$>{)hkkCPk>kP=t(os^zhrhrFZHYddTHaPC1l-=kSmLTb7Jkm_i}Q;9B1eS4Qg6QXCp8PDPzKOaXE_dV9fHY4l2KGi>ZU)o~mBB|e_8u-msgv!~U83h(tk!QeoJm)m zzsSswLm$Rvk6PCsthU*h9IG`PO6mPg=k_g+yWh(aE@n#%yenrF%;Prwz@M#9ImY~Y zy-=Hc9q<+`9JnEGrz|rM-CAm?_f&C9gb8^U+|=Sg8#$h}A;i^M4~J-^pKJnz*hZC4 zMb{4PE_0Yi>~gW5G1@OnfACL&a3DpsBG1g-UMXSs@A8i5B(D7+*AHtE7!B)e+pu=3 zVz6$?V!!QseNdb1Lh*+1NCH|4;AY%iKb%6R5T!comdYSq#A@(v_&ujQC8_a3Lo0<= z;~s9ra@@^}R0sCuq(iiKMj|TtsuI2#n8>F5;1$+uFv}cLul_qET=C-a8yuODc8m|i z>HtjocX1QQiyh^Y)V`Y=Bl_y{8bA4|3~ldQdJtJsv&F=xMz)*Zo-dW)L{Yd_p>YXM zZ^?U{w@b2J)DueL)&?+JE5){Gi{oULvH!GWbcccJ^qk)@#_e0#otAj5$0^XzdfKb+ zCYbkwp;4zBOR2%4ZH=atz3=|-e_b`?9>`8POOn0jYljHGMVG95_`09shpK+CQBWWr za~T@O_wY?JoU6E?SVCLoeAeD2SLu%2~#ZNqM z;N~RvLyFjVMH#w#ws;ST=RPLk^N&=#D(^+yDhl2u!3nli83GeRox?j zU$MG4cTQw&q(fUuQk+xc)hP#^_Z~;9fe(Hv|LUfN46dI?`v25s`x(U`om2vUK!u4% zYP&CJe3cBk^;mnPrX!UvZd|f*Iw`M53(70}O_-5KW@a}j-?ZStbfgrHG54tqEU^D$D0i$`f!_ixex;IXWfmMx2nkVY3wUfVS5gGVNh=hNKYHm0kZH z{_!zbI*QF@xK=Ty%XjsBa_~>~GG7w-b?};V$rjtI zJZ{cw8e+A^+dOlBf-s+9Z`JgKuwH9xnNobJUPqB8PJ4thZVP5)YkdCwDNc21?=pVd zg=-$#&dCu;gLf9r?{*frlnt)k9KhsP$UWbAOFroL>D%=4H-J1(c6fE_ZCFDB6BZl< zU#IW1w{mN0ra6EY_#%&QIj*m*XT$V_88J$l%(Kya#36?YW0=QDhO~kkUAucEqIW$v zqQpe+OE>pj)oo%Dk~M#K|2<}tV(vTIzGGro(tb_u1#Ey*3rM`MutwW$ zBL9_q_|vnJ9ywgo1DZY{Sf|qD>2Je!aB!NQwnQ{uhK)$+b4$1BAQX4qjw>Vi)>)fPMEk zoZ-0}Bez`h5IS6(r%(L>s`TVe>2mj;2-HhNHU-B|Kx8fZePEAUI}PIEk*L1MlSX#t z%1*lnYt=ydARXDnGsbX7dJA)*v-)ez<{>6?;bRMVE#e)9S9^1HXX$?S_xUeHkKrt} zmHF>snmEVxP`+lHBFrD2^7{~NS1tJ>yFtfg)5a9aqGNyI$Ft=>S&7&60$)j;hJU$M zMg;0;u`I%0(k5USOsojLfO$jYDZF`G2w2CGd9*HeD>&f_-fxlo2rEBo+6dVNx9QZg z8I&Zv?qb%C=;xGBHPvh9ih6ZjSr>d5C9W1u0N*Bcv-H;OrzD+p=RQH)7kkejx~w%7 zxw~Y&rQ9Fs-V|WL)(sM=VmzWHtbrXCfb$oiLx0x=&pSOq3e})FK8Ku`BZ!qa(rl->xTU=*-J28_eRYsZ;4O7H)Wbu|UOwTA8HP znN(mW*ZU){W72fTMujKINcW}#38}x9+O^?|vmc`@NX*xm#;^<=W19UmGLg)x$~xGC z@oG%}50bpQ(3F0T{^x<+!8x5kdg`8o^9VVcjkg&5hrXxiy9|GZYC6Go?~vq6wGIJn z?rr|@Bl5;?$Pa@px=%w_o!k%DsD>4g>a$^oLoy#`)qQVOF<`wO>|E|A6)%5Th?$On ze;wgbA{DQT#Cyy>#XzbDcZ$G1Rb?aL6-h-82gg#w#3bbMQRk77;;_PT8A5lJV`TNd z8jkiz45F{j=Nv01VjSXDgz@EDJ7EzJG$;1)cs z`rQvL23TrjEE(UbS?oYN7J-U+H4Lf+UUMUyS#C5wyehQQ5v4zBn|PLXI15}+8~7Ay z{~;-L5w2+G%Z3%)bQMT;V8~Xna1zCh@lR!Y;<`J5>n}YUTA6@6bO<9eY)$X>q;^wi=GX2~r?M6r`Cs9dwgX7J z-%v#lNJ@Sw{pI8T zhbzT%S_wBa-&yv5@9fPD-XE~!IpB%9e&YPcdUO-*f9ypKH=gJ0ft(XQ^&<0gS&fLw znLk3(H$kRm>P5kPZVl2)WeIaT3F$)1ujmvFewFTR#oUIFF}{^$6Re+qVt)%M@L3+kq6@{25HuVf&U0SKD>0A4M?)DV8yTYff}HRu$){{7 zrZ^5@Af5rCNPdemrQdbzr(tnaD{NdCt|7`h1XSWH!0WTnSQb0vOEGUVC{4nT>zJ=7 zp(CP8gMu{N)iluu7{wT9@lAxI0TRD|LxE!B3AgT&`nWas@ z5Lv|}il6rzSUabCW_eawb>Yi?FrrzS4737}P;?T8j&L{HJD{LMmoy@}jUmsio4pHb z+#7od3yqb^>IwyB$;eG3yyNpLtu%pxI_j1e{bBjxSh`!)v`6#s$%%#bh(4xlhLCHE zws{%GMU2$hFRw8)C0Y>W{FfsQ8>aH#A;T;wbFwT-bxYc=#u??@N3+UbdcVT_czL^s zZ19e|KNqV$NjLY=ofcS-6&5x5y2$E6Faka7KJmn49%uxG*mfCO&iA_s-?=~kWym-v zE4`y|76vD}|CJ6}kYl4)-X&&{bGe{cT&To7sWX}l={Q@gB?>X39S^uq5U^Ed>ord? zJG2iGTz2Y-Uu_$m-Jtu>YZPEr3|uBts8}l9juetc)oXlxGCI1BWM`lE-%3l1s_*3; z>3BDO0x3N;|LYbuh(ezIVr3yWB4w$>^`_Ug{$4rqa~q9P=wfy0=+=XJL#j#r@49h$ zwUyEr7e+K4v#$MuHjj+6(JgpgHUQxD)LOTKYoQ&&6`>Y>mkl-W zx+cCQ$RoM~x9hA){ThQp4|r`a^7X88GUPiA&-1umV>EkZ7@?zSRe}D-PDB~w z=pUTJWB63*{0<6C^_iIAkRT6gZLRB?S=*~iTcqUh!uM}XCg*P5oiacLDTB_`F#D$F zEg%&u_>$1B++*1an&y`Qo^A&6{Om{xyYx@Ws80ieQ`H zwo?jH9^!woXC=Q4s9DRrlC}-eTrum(!5UKb@H5xnue;Z74e=OvDo9xhesU3X!p@Ab zvqwr_hKVCGO5{VYIh*_wjzv)@x@QTHeO2za1v^$V1%XUu@?`!v12Bq^FN7=Q$TtCq+bhWYi1?ZKcFAMn(Nk-bO>kUKhZ2!u zutq2fyFrSBvzD9i(J(k?U#-y6N;-lw#@af80TKb>7p3tZ8Qx>hz~H=p|NnY!6x1ICeKAg%?y^jF!Y!~7(=Z(wD~N$An@ZmS+y zuyCDC%>vI#OqyIj)$B)hH$|&3#O-t6Y%B#gT6 zP+R5k_tI6xtzHzO#hZmuY@EvqD693VC=frfwu>@W4IE+=*27i>4+*r@(wSf<<%Zxn$eB55 z(UvZoG)&e1^w{9~d=CY$ogmmZpcmYMKaRYw1!79m=A6qM zWyk_eds~d6>W!o8pS8}w(q}Yei%pqlQg=s-7`{Ag8Pz9YHkHvNDt*d|aqQSbO7{*y z=_0fKi(mYa*}XgC*U)->VGsUji%;pgj}c5D@;fO%pzu3UJz(%V(LKQOC-O(NuGx%6 zubf2}M-xVC#&HsG)!e|cj&HGBatI#5D}PgA9Tl!e6(wiK;H93Oc`X`JUf};#YlVgq z7Cp;2CgY<%Q&T@}jkWTHL}y`DN`ve4JmIXYQQloVyS~a|sXE%T8`3@7(z#9K#?WYQ zr*t-49NhvmTq`5GjItihX3yT8N^{>Jn8&hJV!9k6D|UB;(}-OwoeL5)$n6@*-tZ{z zH%n4j4kufqzSXw^I_hTX8KG8VrX#z&`R$}=0bQ=gek(n6^?0uq-1k)$HS3 zp!#q}zZ0&!g!_4iAg)oJcZXo75*}Sh(%ztLjlZwQ+L`DYT1P{ZRrW7FBHNa{074E$ z_J`>>=ndpb`#6Vib_n*6uhDLBe}w#i6_ON!$)U)BoyJlPuna>Jl9cof&p;rT7jJ94 z3G^R4bStQjGj)ksv=onGkDle)Sgoo0=Fo{rQ$+phOv+t0AAE&|!k{YK%ZXhC^AUUa zM1wT{^Jfez91~ZD5CA-`Nnr4A6VfI089w5LWO^>b(UXpz=F~GO#iH~)^c8tRw6%b2 z$yIR@x#)A)rog{r0ff=@+jZP(ND9=Awp=oa=Did|4dgo^yju{F_%N}DVFmj7*ug_Wqk6cDqAR> zKbzperGFbDqqsV2#b9aGl!P7)`&tDvqcIJehoDZ1jIOXbkXxK1uKpnxFCvIG&x)G~ z_YjHtd^dzzEF(8bt>RIcqGrke*PjtSyb!7w`l@AuQn6iV&NvpDGvFfhY$40?J~p;4W~I2bE^ak(hl={q z4mr^M2B3fWZ3U|3j6(f*Xs&+9IBBkaq22HH2l{(^9Mi|iUEH57XcKtEa|;y389y9#w7g}aRvK69INj8o|>!0)PR)|4R+TwO{c)1qKz%c6r6 zf&^h;dDt!cWoBg5DxA6~;1X#=cFffiX&1;D5EJR>31E@jq^9I}#r8iConXnqVQ{BS-}~{!v^!jt<1QoG2F|`z@UVRjQ=1Er`W0ER727|FjUv1E&J~}UIE2D z+5Cgzo+jE07D}k};qvamOXKNGj2+|U1uo1<^o*fGIMOsO`Uya?-EXE7BQ6>1RGI*} zUpUgm*ZPcki>CH^!9`S(Wcq%)lI7@gSTMr!{T#C&y%e-;$D@IfojuMeWq`AE8b`A8oCI^%+gTsx!M`>b=G(RXld76 zom+G^?cR_lr1n^NFDZv2JlBhdq-vRyO82tsmn8vo6rtc$?^>L>nI%T?0pDV-+8Vf%=fD-nKU6p&>mr#cwc%__ z=ii(@%rcrnLwgQ}sDGD7u@E>$`t4eRk#w@dSCg-T)v89vDlal#kKl>w7S#4jfW+{p z@aPhOfChbvm!+v-JbgCovQQ7Yc~DoN(y~lrfRg0^!5F+JTspZuInEG<%Hm$X2pj%?H@oml}ZG}7|8Gc7O0d=#{Xg16R<6*K+Ism1zTR1BMePA;lgH&lF(xpa|a0U!)bbR$~* z++7JG4DU1IZINPIHV&TY<~M+gaw3S!(1%6o2=9__6Ri1Zpg%_ zD;MRH3AWX4jUuwHO&%5IJ21VQ$D>-$4BC|YT`aEJPF~9E-i~%dp~$DrVijteC;{RC z3>>D!l>?CI=rraOLV|HEEJLkg0D_W7jY41ePqTCXUjqs8co>Cd%^ zF_{<4qXAFMl1ffH=p;)v8XU)lfIt{J(JD(6kQU6;DvU6kx-r;LI(Y7G?MrVCT)383 z3w6$EdUO4DbwDCb@v#kddCq$1Jy<|2qCf|2j=sBtYtw*&u8iowTuVF71=JmsWlN6Y z(m*5shhJHxcE~*2>=S+(&chpj+MU)@wTa4c)lilgD;TfGD;bgLYpK;c&yi0uk|6uB zEy;Bi%uy|yer;`BTVGb=b81>+&%iE@3oElHoXhXQY|Cl8Hm-*sP`*o6J6RE>mrC|a zCK3+x`^Q(fYa2I|-jKHaWh{?Z!nqjZ`1hv$<&+OvTz=9o^VlQ^cCj%*9mJRj*5R>1 zO{22n!2QB#+8rBuCLib)1K10pE`x3{*OiaT`CNp7K`v%hC{LesaK)%E8R+?+s>JBz zr2;h*3}tJTn^3)^Up69)Bv(v}@-Eml)Rw=Lqx#9#_UGm;?|9r3zQz~@i;gcKxJlOb ztG2)3btBf!GV$guSotVaWNyzgJpxZ^Ma64}(Cx5HBI8xwK~$&)QAsqkRba@h4VbW7 zhIh7-4X69XC&$cYApR8FdRv*KTF!>0CWvSyNq7XvDQ*G2F)+uBQZiMgkN0 z@usE;fctv+RpyB*WB(5F4K4Mq&s65-=gL&K2#-?~h@`xRiNxR(_^z~flgRd%9jp0B z<ao9;Pqx2_7Xtm{gvHF_q(JaQr9sRe>PwsXW35k%2HyGP$Fqi_|>0}DyCho$LFm6bdev-=NkBiUtY;h*2AnX zjA2Uu7TYeVZB56QHA_vyjM6lxM{CP=grQgLJ960__cp>oVZ%&hUK|R(7pn%12?*qs zlAKoN|`bTq0LEK=m)PkMLt+#$PSUkvHAHYC_HT zaUq~Sg^DVevl%aR-ElFlZ#0S;0d8qoMn2;Lqa7?THm!y~d+{DP3^7oPnw+aXeo$ zK3dIf!@}vj3+jj}+!1u0Ng$OQ;+@>VfV4hvhmzzS)zMyc5VsxxXC4lKYN-dn(4jKC zoFi96RhP9LhPmR;KQiVCgrrdxQB(~OdXQCJjCL7B$?LIrsnzG9A&O4714_v3M_eN! zGp(_hwgRkgmN`KY!4oKe1R>m~bJH_Ldz>>^6_=HM2KO-?$B2t-k}T6RZ-mm7ccZEJ zpq5-J1a3g-thKuVBAXT6U#?D)?C-q8r`oO=*)pXY0dtfdK`KxmjG_EW!FO|o%rCT*n$x6m8&g#sthzgIN++W1xi_EmKx~B7N^F$6w<@j?=i!sFhb%J8 zP>$o1F%YAgxP4=NTl&QH3?05Aizr{>=F)lusV1&Z#|O#1rS|AF$d)8(%_}Mzeo^pp z9d~ZmIeep8pXg>3WnWF)VGN_|Uo=+@s&t$UyP8D5%*b%uVqW9gH2wiaS*m>zMp}v< zJO5_c;oB>O{ZxyYwL~v3?P*piXDsb8xw3 z>H|SIQd6LUT+D1bvT?|mIEh#&GyyOoStL!4zQKjdTHuaFRaKKwkC#G0F7scIV*6i^ za-DPz%QX^UE*d@b%_)trj0!_Rd)11VjpiBSiMWk2D3Wk*xPkND*ncpDBm{c)2Ex8hSFP)EATBiA}8VhB# zL~^PjDtTY3z3CVG+oJ$Y3A?&7yQz9aPONbGTJ$WT+KQ+7S{e?rTm$8ESPG|nT7+m* z4qVC8oJ}bD6mZ!xy7WHG=*_OYA!zLf;hKtDj*P-p$KeSoj-azXQvKqd)AR_$V#{WB zKVdlR%6mh3p~d;rot~T^c{Q(wOW4Ib0YxJ=m?A2#dUA_7RK@uYFdD;I=}39e7-1!AWnlM^1DS=1qzC!O=64WsOa5(=giC`C*AGFfYiTC)wfoyqR z4L#oYPsu8G@p7mu#(N&30d>V%R#`#>UTPMWFWCV{AuUL)feTPnotZscIrONxG8aap z5w?6Q16ji+gS>epksK6FC%!8IoIg zfp%eG*+N>xbJSJEUo1Cu>3Az<#x1UpYD&!^3cP+w?F!xHosNiz_yE9t6m|K4t>j-u za@iM(efJ_+#vWdPiZraepw>`alkTv3=s+bO<7x<+b^>~N*>}#?rV;gV4h9K@k%@l_ zR52(n|9JczoB%WWd$msmt?sdfK`VXbVTD057wmlCw#Ld}&3;@pqCVU|cS|0Qj4Nmv zrE>q`kiy;$8F*&CJ}ba@6P3+G0}#}lVt)Y$W}LM<5Hv6k-#|1lW%F?lJLDZPmiz?We1ZwNWup+6V{Q z+wG}fsK5j0AAdKm~6-|rc`xgm`iWo|)W`DzB> z-DjWQj1|`mXAJ|TniqH?G;r!qN$B!>^VUwFXN!Gerq;gFuji@*rL_{?=(%2+DI2S) zP5>LD;v*Cv=+_>rdQo|>5w0qIR~{O4Q7OlWcE%%;ebGBo`haJf`{cU&8*``>I}^5Y z&pl1|q3slt;pfk2hj7jAb*BmsA{DUTX!%y|F5pk4K-y`%X!8JoZ0cJDCXte~_9CpN zFJExE9l!23kYZ29*Tqr1l3O@zTqj9vkx5mByhTXK^_OTdm{usu)J+%@3X1y?!ymr3 zsu`Mb$^04CmY#E-dRBV8XAdTYVLaXmeyy1Ymx?@l`o&C=;ys>B^x{2{OqzN8CTJ%F zs`6?q1UQrcCL=U%pjf`|vgH?=6a0&_bj69^C+v=u^8g5j0yfY`E+=gg~bB)_1on{L%g~H$JCoZ>soY_+& z4{Hnt#I>q1h8fT=Qi(K@0T4U|%TNkjDph|~3c1IfI-QN8XozoU_=*e3gAqIx!3a)@ zV7npVMf?Mn#pU&vZ#pfDw&fvy{)1QQ_6SL8(T<7UX8HOxn;fF3d-q-5nBtXa+Anev zZUf23;-RNM=T(b+PTQ*Dp1+)SEjl(31297CUB&iqd6`Gl2I0R-?&V>WN&bc*q@vWI zjC*2CD|g6$5G1=;P>Kr}?o#_Ug9x(eFgiIjk|-mR_K#sFCs3tQ=P$Ch%)`)?r(Ly5 zPEGwZHr&-ueC_9#{cxgQy}pJ{-aB2=)NG4!7xCj7ZtaeS3648+ z7YWqjAv9}AR@|*Akr~#8P^Xg+Ye`~DAjfRsHJ}Q|OUv{Bs0g86qK6 z)#!J0gi;t(h4ZzGgM@H-ei~uPSMaE~G;ssg#6F@=GiV}j*2nQ6Xs``2MYH`h!jvbp z`n!cn;24He*z&Trc6wqWEUH#XSlEJL+uqY%sfd<5T4dSC?j?Npsqmgyo_O)jdjBm( zU0%s6h1Tm_|!w?9bLI)pTlI@r{F83Z{lJ%>hcBK*q7sGSR00 zuPquml8fyR<+XL4AIdYBL{W>5at_WmV?Pv4(TioAW5^|Lez0~HBv-yfi=(s#!4!?9 z>BCsxS_W`EqsLLkGO~qnJ@at0hT*nrDc%&x;DmAg!i$F*$Oou_FhUJPO*&h1CvqfD zZS70-fXfj6FNgpHSB%(4TP=aQfZP(_FtkXy4wYJZY7<4?32q8SK9RpY2N!Uh7*h0! zYI!kCe8R5MpdO)hvnqaG*Fz}+;^3}CcorjXM&capHeB>n2*9uxtC)RFnt`Ie0E(BL zfE{*);?p5ayHD8;Ywl@-Yrp?!3x!)iqYNCe@5)N@|G@K-v-cS|s4T(~bj>Z{= zF+uuhd(7+?cj^1j0tlXySK!(6JX{^qtbjT9%qJ9uLVlRy{2XZ&@h!?ya{FUdaUr<*(R+54ac*f;kb$~J(_}~>Qd2ngEh-Er}Th>aq`!_IUFA# zv0m6)r|=yIicY7;r>0N51@%&?GKdGn?zX=a)BcaKw}^_XZK8#7f)gwR*Weo5f&}+& z+}+(JcyM91CHt5ZOjD&6!}LWB9e0?`BQzd$21!AqPU zA{D!!FXu{i_q(dG?c3`<8_Yan-xHX3QB8VeZhRt1&8hSokH(S=HvHtC+CUiGK%a1J z!F^SnCPRctql@+v6(~9np|t+zpAwL+7H@GOZUwHL)9t-duiED5x1{oXR2-ORP}%Sk zTG1OV(?T|mSwg#U9%}hQ`SHuRDvLVLD-#AaY9G%@Da_p za>w*-Mxa^KXz9>JYdIN&d^S4GgucT5z1v;cMczf*aOt%_IRVle6+C*wg><78g5y~O zdJpthYDTjwZ?tPej}fc59$Z&k%qSVIJ$)L#W+jZ zh7732XWU%CK+pgK;RX!kC*VQ+HBP!=Y>a;)uYQ!ofjf-?YdAV+5NC14 zGaokG>+&q1GY^J82Nh)pfOP`u=kM-{POm^Z{`G^hj_|(;SeQ(Qi(7Eahl`6&mmB2b zQ|gT7Kpb5A2!#lZijXT1U>=fydFYT7&N}Rdu*2| zjE+gHdrAldd1`Py+Uw8Pw=fsnSI2T$pVO-PcH&8t)#bGGP~JBWdpJOcF?j8@&=vNp z^ir&U3q0-!jPJ!CJU2ikhbRAp`7aXuBlj+$89d#q(N`);DQttUYJqNnR)CBP8?BJ7 zpo_{=CK540kD?V+D%#r5(@8!FHLo}Co`GV~S$e@yDRF|SnnqS?`?F7u5Dk;_KJN)y zS*&6KVv|FvRu9))PIi3ipW)L|ZI!(%QpRf=qd)04LC*n{Zmd+oF{r=rq*-5{I|_7KwbEu}^5T zDf1|;dK_Qq`pjGLlW5N82|yYhxvipOvxLt=uV3wh^6%c6f{hm zT!sBDNg8u2=?WE{;VY$PeF3 zvK#aX*Uq+Yw{skXkY#T#x}p7v&;}^3AB2umH@4hdRi0fn$Zj@-aLDs4J?Yy&#eR`I zKDcCf8-EINv9jfMipSL@i$jtZ*Bp$0XnXYAb=xYWv9NhbV&^7(FUM z=;xBApfPA^uBhdT;dzY=8!C6!#9@aS)cTv z>y`mhd|&S3&n?y%)FV2~N-c~cx9lqH6CfV{3B==VKs^5SA7-Z>yp-&%m&kEpYD%%Y z^#awRQn0>eGOq8L7ODEnDyj)@@>mGfj`i0T;;uT|7+js6rD?O!DgWv>)ynGLrR~5d zg+=~e)pvSw^&a(^H=oC6dP?^`^%;TGdLJ}>{T(l8ee-|SJJue-$2325TdwQ3D^8LF zhP_pA(+p2ydD96h10i{*HJnLjBpH~;ZWw45{{%VmsMU|KWT4AbWz%pQ1SgP>6Od77 zGmueNvyoAcGmzIUU|J;FVbpzv1F7t!`pTZ9kvdA9k#lG8agqoNRC8k=^Lxmz6njT{ zE#Y~jzaXb2obox@_UXnkT;HheA-@}oSCQwCtMlM7IH6faHU~BhYK!Rnf#llu;Budy z_HY&wx4`Vi8;EHISW6MKI03@?-;$qwjyZ*TPFqC?H)P4>*xU`$d&JG?Z&qK&`R%B~ zk-T5w)(L(MLD&@52~Gzfy}z~>4HO(Is!LiHmax~4Pmt_vgEidNkH=%Qy~C3STYEML z|H+q=UGyv*U~eDK(K!t2k`X%GSx&*DLuSX^60Le5l-51C1H>)Q9>_Y5$)gB5J_68H zWZ6*aq>BCwFuw;pOI4iyi%jfy(1#J_p_oj!rr5Kl+r1XA|a zr80l@BP3%pri+a}#fObn!bLM|xKxGSH<4010?^CbDKLq7bZ_-&Q2a0#=8-3lG@X|v5u2t2(q-GNI@8dHJcP{KUy$ivNdL{t^ZJNoK0ywz5u#2Y~vSMFsONA z-p+%ADiB#fIudyB{i_Wf0h-$kRh~lV=Lg&1r97ATGT~Vse5erBR%&_90QN zs#jkq?NvMOP=zs0S}D@8PgnVBOc9**?`!}eusV(6xQ-U!y_%^J>O-s!0j4+aM9B+HcT|YOjam$}?5gogFJhEun4Y=T zIx6R)Rt5x^Mrp&F|Gp=t?TX@0t&YM@Zzxlf+O^2IDrdO|+_ATg2 zNIz>aTf4-a>^%2^!ztOb=x`ihJ+&FSCht(U{SBnmHSa9 zR@p2tPs~s*)D}J@Fl68pJbAbuvJJWdgN6*d@@2BgQtHu{b@(lcQTxH>mO^vhQ{+`W zKcsoi9G<_gfc)U@L|7%9aaztGMj|JE&zJJ5=TO zb+`!dE9q$-x%TS|s>rIJ2FQz;a_}3zdSuQbb;uvVZ5DeV+dHO?WGJHUrT|M*2d_EB z=8`KI+at4&u0woxAHg2Hd=n1%5*h^0aT)|A!zu2lf~rSIY+H!iwNrNUpP{|cjwfBu zkl1$Gspl(=y|Nx5n|31CGa{$sQigg^w$!PP;<)k>GnvnPGBq8Bm_pvTabhLut_$@^ zyg)FoszUY>)jm!MpJwp>)l}KpbuKMo2#?|z0u@HKo3?grTb<^;Sfx$tZMDsividR* ze0cL8Bd>bRb0)Qry296P=~GJhM@n{(&@dbq;aVCi?6#&iZTP_LCSaPUzI9@4;2MRlr5simhC$ZezIf zcS+U-(cr4Q-&gxR^TfS$1r=ou$~o^hAAmxyDeCeV1;z^k*X0Wyp>4z05$TALK@*I*}wHxA7@ z!cCQPVqC-;;!^NIh>EVJ2qYfDqlv_WS6TK6UfQid)kiXx{P$pJ^CNke!Qj+p6Ri6u zm3;XTc}o_bf7K7o_z!~%i$Uezv8ljX9aNs_LC$$RX2aJX76b)9i)RYaG6I`K=Pa%f z-`-;zkZ4|b>EYPb%cj0W zUM2B>cSY-vz~(YQUPX`-(FvflU|T01?aEhad+Kv2DRY=E6pn{{#gqLkwD?QnH0u8K2Fc-@M%F{9w0htY$LG6&kBDzb@QvU(I;hI5t=s>zvZH7l(d?Xn`6g6)Q~eR3Wx+^efm_n%DT(oxNtL2%&>*DSs)Yl5`3*LI1b9 zTnVFJJW*)#0kosc#&UfwPx@$dja#hu_BZa5#ree3S}8S;MhyY+N2df~XD$`^&=ySc z8d03Pb_rv~rd9r{ti=W-c4)SieSwo_Uz8OoC>;G4x3WO6kR33&{<`|=RhiOHw^}-d zmLW}C{06r^&fn!dXQ25$dvJzB`!`&=3sH5E8{q}f3S<6{38P;$-q)fliv$X@{MDd5 zg2g!rvK+FS5UsxL@SWAqtRkt;y{RG!L_upUSeb`t=CE2lx z7rgR{5RQbYSOUJQ)-SCeD?EVQ$7*Hcd|6^JuO9zxt#OiF0^-tjm6~dBs!CAZQ(FJZ z&3arRuojiZuQ`6jsnG8&e;}xI zf|ZGULDJY4qAR*xyISOxfgA$2js2KQ!Tvo>KMFLc2v?IX-HKLAT(aP72~exm0K$r! z7&VdgX?hqW8VlS#G)Q1ep6URW!ZiH|gO)g}p?F1ZR_+3xyT%NC7@=15@0>i z&&B6#y6r`SNF3Zp^pe?G03t;LzykmGQC5`ah5+fyYUL6$ZDnKrX8cf0jNWHR8f8BU zRdkkHJG@RXj&a&BlT7$pkEWQ$p5<_Cxb@`xB`ohdxJ3J#1llna)Ie?+Yz~}SdSY%b zE9}=!&pUh~LsdKs3)uWPB1-fCgr)dlOx{x1yEr%hq3y7S4~5YAA${WOWg`w16KI}>vI5%#r%FNFFehU6tmu{Br8Aa zIr6NdsDQ<3X|;FaZ5tmN-2tXzthT8jJ6n%Lr#EkUIfrP%+FUZo%$eU*hQi2ko5RXm zT?#_1)u`2V=D|QW3|I^Leco+RRtl3=?P{%-uV<+NzyArTjH;v3CvRF%*;>4w>=(BA zZsNDIFKiQqSs!D@vR5^C?G*bi9ggvpR0+%vyHGycGrY=6Y{>XoM*^8v>wqR+3TWa7 zM91aXSr&3$UkLk`>PZ}BreX&`f~n}|C!VQrMdpXhN`mS2dv_g*eEI4hKwmmDgio3( zx2tj(RBR(UM1fQoeiiDQX{F>-DUk&;2SO0_9Feu#*Ui>IKXj0Mb)YwK8A5;BQEH5* zp7}ztx^z2M+3$OM%7t5cYjv`PnI9-{2mHePoq?BFWdK?tTTqA6BU7DB&IwoXD>CnT zV^z_@r59)F#!b#g-wu=kuOBl9xCP3@vo+>|WKuzPJ~A|}sluwNfg&1gmNMpPIGU;q zUu@IWuoH_rj6lA^6l8W%MnzB3;pJXiIFDAZ>SVT2;9lO{ut1+^$F^ON`IVMq8H#a0 zp{|)vmMyz38C}AenpDJ^rL7JbJ{w&x`$)_(yp;zLDgb$#N=>QJwPWRu}KN#qEU$kPBi_#T#Wn$RpSOct^QW{a{erUJgBc(a{uPoh z_*Q-^*c7UAy^}Px0yq~=7GWxmyomH}l!Nj7zf?ivg3jWj+>-Q-1svp(!uUn3JcaSd z)@l!L4iW`aUY>_!3YKXvN^Ke5wS+|rXL}(unfT8+*wg=l&I&Oh4R~`>7q$(vTX;>W z-lvKy=HMf#ZUi!0`0mEugAV_hiTLkG62qZ)E@D3O*kHm5WQpN$T)`bqJf{6*K9*FD zq)|7){e+*ld+XF?2Uq0If(MCShYQeN4I%QGeZja<3079DGJKW2hf3~f677Z-j4}v? zHHWO6orej^F?U)a^7XG&tQq>^SA6*L$%e}L?fQC~k{S9%n=-6`=7A=0Q?afMEg^Y> zCOORC7=6Q##N2ym@y>}qSF1cKTJfs;o6oy`7a45*01$h&IAWgj104C9(zb~I4?H{6wAREcz;;q7H0k2;01gbcA1ZfVJ#^K$8O+)%~ zJg5|nr1RhLdevaG#(_Mdc`5A|+!Sx4_a{S6PKOHQ>w9#Yvc7dy zPTs4u`R`nz)n5evCS{PM7g^C~t*g&5qsYilGb(eYW2{to<}`kXU{)$vaUMma;!R{m zEqSE6YV2&3og-h=nbP)*f1!fDXy9x-uG5Tx*M`zdyQP8NRPXIU_ppxNktG|_*QaP# z_w2yB1bAB5&1?F2b*Rmi7Z#46sUDpjt4MMF?hWq*mnrK1pkOYosybjjc!#+o>SUC^ ztMXoFJlEHL$d$=m3g;3cjl*MsrjuER_~SId$K@MsB1?&^LDQ9@kcmTgBT;KoU^yjhKZDlbD#+<9PUIn_pqBOd)rik_+>L?9KfDe<8g#~vYoNW= z3Imyjm^KXFEyAE_Hz^?ckX9yh3|nA~Yj{;Y3Rxj5`>**|y~ym0dr`N54CE+_bd`*6 ztKo<>v@xDj8EE-XWn~)g%T2{3A_h`Nq>|@Cm&&kN7OMex+GUeh%@25cXbFKW`*1WT zzeQ`vs(E{n^iE);Mfd{>$?SOn48_|!no<9OaYP#qZvf)tVAXYkAe~soPX+H7R7jRB z42t8HLf%D?CUgu1ZiwSZe>Ql){cTM9@{iCLrMX$?^5Tf#VMx?*F7)qIAWzoWrr2~b zcoV31{B+JAOE8}V=dL6McVdKRW8*50&y5-r#D|H11SCp*mx`d(WhWcQ^k8rjr8d_D z($!}hD!)U7W$1WmeXJK$P$!Xezly-zUW*2Z5RyRxT4Y!-cqGlB2?~VRbN<(aY0Om6x#O)^dH@F6FrD+&MthtaJm_d03*itpS`okO zf*JL5Z7ge|s&f#;ax* zF26=zG}TkQuWD0c2<}1aD<)d>)+{aU7+c3(c4>M?;POds+?soE zcx9oX_F<90TVlipwuML%%KOjYtFew@NFDa0Nyl+~quWur$Q0Fuyd!5tJJJ(L5-EFB ze^r3)?==i2lg2}~bc?@JZ47r2$)7ow!g;u1l;X(vN)=JzkwVZ-H_ya{yoyH%?-(5& z*aWS-K3NYtqvTFTaExhL%78gYTBHY*I|Yeu7#9>Mf`|bb!_hNNrazo;6>~!EPxFmC zc0EzMyj!X-JkY6iDM$iYB-O3+gv%2^w^wn$4bI;R%PdkZhsSyGe(vpL!=c~lW4URE6puPUygzBntA_ z{1x3m*<@XFGM_&$MQOK$Q>Fgc__b|G6}#{w92HuO&&jBzDWa#T4BS{rjR`Oi6*N3|4SvrYj$b4?#Q3iC|$39^r|dazc~F;h4w#kR);^3 zwTy`SoF>n!J5a3Up6Wl-Xv*&l+!%H0-J(k|Dci1&)2matR3G8xjY&WbmWs(Q6m@jy zC=izp4%u;$1S$$~9Xo<aAhFGN7Iwvrsk2{H^)U5L^}jobKA)@-pqw3N}6acS=@ z9AxWPb%Xz64n82}@QZeQPO~z<@{(&r5hDdtr@NZ0nzWJ488tO*{LFMs0Y3O_SVcs4 z&JE10y-ziLKPH`9m7FN7%|H{-v{j9K93p>{WW~(Db!K>1MzHR$k`HvtvH`kf#RElw z?LblBcsS`8ewh834MJ#gKs=)wKT&u)Aon4bhzHFj(C|$92F{({59nex4{RizY3@_S zxjST>A@NN9<&epkL{|WB^wKe}^FWuBorkxR*@d^$CD#w=#x(mUE`{2gJmE`kE8XI6&_TlwjcZx% zajQdnoKo^SlR5$O1JwR->?8bA#1l&f1>@2|3Cv2-dSfl261%@-9;QF=s2q_HAZ2RY zaI};Y%1i<|WMU_{Rg|#tm$9hQI|GK!$jS+x^n227aw8o7!a=fn%2uQNGEA*BH)GYQ zvlZh#_?%LM$PIxiIs$b;D(mK0i3nv2E*ptN)gd>Y!4~B!@m8GtAjmyjnGvyO zJUzNur4;S~J8h2pF(tZL96Ls#)<%rVupyc$^1_)^V;gZ9FviBS=(C#S=kY!r?JsWm z`mjY!Sestx7L8r|av~7RpL{}<=DElB1r@feCo>Bi=+H;Jn2cJnRc?A!A6y-Dr~0VK z1oacC?$&>^FO5T4hU&3OMc?ki1g~MzTNX={74{Jnq1!IeCZmcK%$tdz$OIR?zBgvc zR_$@2iXUi-t6@G;X5P2N!`}+ky*oP4fp)3UTKs)ED~6d%Z^=!wzCiv7m*FM-`A9-{ zmynY`-+ZcDGJoQrXQi8e+nD68y(wc$S@iqt z8C0A2L#|AKVJmljV^ekGOIDLezJ9R^;NE4D_nDLE+rYI{(Ur3Cg#i$m*)TjAU@upW zo?6MU0!c*!EW#oeu3}hTh;02uwNW0F>?&Kx*M-?*!GVKG|6=0LbfRs-PAXE^%)2<^ zDZ~(u=yOlO``a@n>WBeLb6#D+u#ttSpWf!P8oUudlA2*f4YGBJs%GJyvLS<~3cfQ5 zZqqNxV8~x(!^uke$S7A`s@n25V;6LLvbLF*vTeJ~lEdW9hr@0mDJPdqG~^GNoXA;h z-8d#qSiJa%<35NHWqwP_0O(G%;15Nuit>xGh?cUFNw3Osok6)?e-a$H2-^xIw{Vipg(Zhe zy%|X)YoAUZSeB178CX_h+N+|>te#WW++U%BV4{Db2;Nur=k9kPGry*8R$UT0vhFK_yaFfabugV|X&iy`N5ch6?(Apk2 zpIM%`bLWMAe<*R8vUl%bx+-g@y(;_1esy%~wF}0;+y%!Lj+A`ed)%>};muwPQ2e;^ zt*>P5I%Qt_-}%h1B;UJ?Mvu~9u%`cL;W?j1N;84?%~b6%RW z`g7{h_Q`xsQeZ~7e(4_!M{YTNrwg*S&k@ez%WT;yOkoqJSh*iLRyCGM9v`zxj>w;V)s!Rhu_EnSFP-N+iwyw)b23^sYFrE6E0Y{2e?8%=0d)ggpg^wZQLRZ~};zAc|YNnqd zBlkP9LS8b+@OKhDkF(yBN?yrtCgbwM-mj)AhK!$8SALg7(NDmG4H@^lScMGAh25x9 z|Mh9G;tnCo1-BZ|M^P7)4`nC^x0q_q_T=RLp;1GV`VjWqFeah!yw)}4T=&g zB2AqWrcI*Td(%ylO4YyfGtirEmDL?0E4dzD3I7~KPZdWrOJ#yL6^3tb7OfcuGaH!b z><_yhJ03DKFTwe`7{AK1Q`r`DlGql0q_eqt2pU_(Vic=HQs&Qpba=UJTqc@2lPWuV zB$v_MO7O}8t&!A~dWD{@$(F1=t3?vhxi-DC6;;^}wgiAAZ!*x66lq<3`X8jq3SKd2 z@6a}3i>@nwq=Vv>iMiq4t(%|6Xwv7m{9YG#-Y^E%Dt{sWUq*rQ{=ba^W#i`Igetl!Nv(I3b z*m+rxzr$Pa`)A#6B|z(r*J14+&v9iRo{lg&Lr)#*{kGrVF8sWrNZ;Pz>!{Pj-DTTRRI^|Q|%cxqbjL~%=Z`F8zzE;&t9g=uzm z#R)Q1{CcwH8^E$}h$6Z$elPVfQ5!2+o+`G`->;INdp@Jqyq)TJGb`JxTR30T6*$W+ zp89qRK@+e3LU%iaG3Qb=<;LXGaAM{0qD&ZylRIf4D3hMqk=P{T>2BK%k~Ti9L_5J0 zvtD%l-n}>~A$$5e3=h2dywv>uc3*8jb#Ck<;C;Pwb;|2<42Qn6^?r6X_5L)sM*8h_ z>ir%lQn_4*_qdP0f6RQ*nf-I~!YdRxj&X54H<%)7Zg?qn=!0H4BJB3C#Etc^ZEWrs zkyRDV{Gg(7C_`a5R`i@F_g?wi8F~;%hm16~aj`uM(C-n3DIVrmB8-=! zuZDu%)M{?veN?SGsRj?uTK2*qmrL5(*L^wo9u;c_kZ_^(zpq7yA$fcEw;PEy!Py|Z zyb_oWF~Y`E&C}@*n}U%H3VJ6yg6~gPOU=8Fog_I|H(&3UpNdExJDWJRh=OrH<#e^F zOgfWKwoV*xjV1v;g{(RrTzrMRkIIrw7$a6kOmt#_mCb6MwXM6yUwIC#(rHX;o!t+g{zlmS zjx@yx3T?O@@tL|r8_B5H)e7g(%Yjgzqwd%R+n*28oTXEp__*Mo_6>5n*{#nlAARdi zx3(5*|0b7?%lB}9)Ci8{$Y!qA{P*?1ai>!LY>FfT;_f^(U9_2>`!}097NvwF(~s{{ zx{o*hi6uU2L}NW(w#Rylx0Xrd)b>li zhF#>;a(UwwUJkF?ecTZmTF`fI{Ax>ls{A{ak=4?s>jAtR!H3YRMXtZ>*DA*tp{d-* zi}Ig(KCS%@lueGImb`&!!p?Um7Mwe-Dh2tRtd_oIAy03Rm6d<936x<%B7qHjW6iIU**!8!c)9-f|utyhN$AY;#_42H42VLWO((3rvi{J$2 zK<6@^)F9`T0%s>?bGzWa?oVCkpAKee4nTTK(|+XECv6&!`tCpvHty$tYC^sx=0BX6 zU-oqD$|sI>l&1RI&3vbBBWeG*rcpOqCO|SwGMy1eMHlm-SN^`tm6)0RiOZ{~CquDh z3Ng+^K^zu!b7Cwc92RYGWc*GuEZXMGIEpuH6jejS&!RNVfdcX9YOnI*{pwXTF2N!Dvc1fS+EZz@Kdy+#;$f1_*SCO|?RyuYu^ zyTD&t3$N|W0^V?k?%j+kp9N;tVru(C@P=fd35=HtaE8YCEu)g%m+<+mEqPMz41s0F z<7Tz&z}P%^9+7BVq}-iqoVlZscDJ`o@@e?qp|@60$HC?ym1yl1e%Q^gw{}C<$p%pf zXS}wieDU5>!Y>62Jtp{dsLqjb;@gl<{v0!JQ=@sg&!6SR?42~rMw;&K^rQup2-~|r zBkj(@Wi=MsCSW&sdN|04&3hI~(OF zBQ{q3r_JP=q^=XKRS3&Mh)ZqHv=X{1TfY*uNhGtz5hgQg-eQ2o%$UU>QAQturGpf- zu>1-FP>5hFhRKwRT|qIZ;Zx2a zcqfUMZ@>APkQ4nCRq?&Uw^*~98L@6P-_ywX?1o1FlX&t*ay4#CE;&1syb9bT6OaI&apY`)eX1 zhubVUQhtdHsQuDqF=!+5RG;IOE|QaMI=1H%R8Br35icpGAwFi|ua}WcKiABdciFGM zlCNelGa5pyrTLm7*FRSfqfsiN#%3B+*?)*(LjCYzlH%mDz#=aB1=2vQImmes2Z?i? zklljT{KqhY%x@581#9$DLMVE3?rNqw*gaOc*^LUh-xrjs-b(gGypGUPziOU8zTojS zJSk4tg3;#RVp+Nw{y@(V714jc2p)S3xj5 z0T5`4x?R&2^2drc-O!rQ#EQ1vSfIFaS(OsT0uw_`rJz?s4wVP54?RjOJY2fkxi&Oq zjrS@s{-B824p|oaMteKTp6azYBxT;V_m{6+TQDX{YJULM<ChisY-R8o0Z#lH>vo4NqRd1(>9Usvlx&=zr40a_MI$ zo7-4fsVR^IUj|B&3whx51xZSKNT`wv<(JpUrnh6oFZ6x$8=B%c*yjc;Vs$yZwB~uF zvHY{kM-qtYWaBV{Xw%=l0_IjOPVZDJF|A8-bxT_H@AA&zjGq<(uqQ-);`jxwWZG2h z8ElkoZ1Lh+L?EP*a7W=U0sOTTBY2FQ(6fJW)#5EhsV)Z*P-hA`Fv3oLTnzBKp^W@| zUiOiiPtf5cVv0>u!jlYE{EL^gHfH~a36}r);O?eJSyzD(R&oK>cz>nVw^jo&=J+A@ zZgg-mV(1G`IS1BS{oXyRSER*(2`3T%pHjPsun^xgyhzH#!3Nv>oE7$BT&ndu17k~y z@*??)giJ&X%NtpbHN*Bf8EpD}h#(CMM>*5CCy|0xu>?|%av!8Rt{>8#y4OJxjpoH{ z=7v*6ZFQ0*4%4*yHv9<83$uqmpx1UT+gGc?8BE)2HT~B1Ys+m8M)(?E59hnioLlp3 zE(8eX-S+B_Y)hupj6y>V<=v>r>rwcl>jJb0Ol6xm_-r?44=>SC3QollBud&>L{f>J zW0nXcj6F&5@7x_bMGDxYaoE{1*AvuV5eTvdyA=w~TnTiGN|d4XFJ!unUE~YuAGHb4 z+<#VC%$M(R=g#ObdV(~+MO(*^oh()P*vp`8Dp}dl6#aEmvO1?JqNq47RM}ItO^PTi z7j)8ESKVu9p>&FntB3|iw(qJ?>7V_QLDGx_M{e<|GEeJJ!CMAu#m-l9ZcdVYUh3&t ztE}i1Sd7T)%@YWU29G1KwhE$##h4KWv2vaul#h(9iEu8N%i4My?OzRbX$ex4Fr`wy zf2spkAFPTquLx%6Q}3cz+WY7X!QGxK40qZ=F{e=*XidtB&<5b zcqxkXxfQZx72PY@1V@=_9tX!5T|()?7~Qv<%+{to=&H7f1iJ2NfleF+@%d^^xwfv!)w? z`s5T>DBbpmLL*hl#7ubI+Dh2mGDuU~N2!H-!Bj7N#nPB-ljvcCC&c8^A1HMJRjVi! ze~{@FA;tv#**dSHOUD>4`;oSiy+v9sSu6(pWWMTas*XiA&0Ht;?ZRrwXN;O9O~zTP z%~`D6NoQ4(L95xiTAS!FHk58H2F7(_;~e~7k!u6ATmXwW1S}$-p*_@8{hqSFYHsJ0 zXQGQY)M2uUx*L3cq3d8@V;zqC{=@zE0lz}~_|(E_TZCV-Zoh6wmC=%F+xDXFvwaJt z*JM@wqqke;i(dh9$~Nx&gJbXn8HHrg>L>981CRTt zHIBrnE0e1P2qvBQY9_Cr%cs#?!NV3N+Rxk++^tRgAHHiZIp|;%(YrsbabyTC3aFpzBFf7Q*&F;Qw5|=gy7r zi-jkp(NNIHV)8lWaLG%Pmp4UQ&hv!d!KRsLZEkn@FWxW(hoghd*(W0Hqkp3@wT*({ zYr>&Lw~zLaa-3})JUs55Aii+(nL+-{Nv<0nz%yFcVbaJvuqEX2rc^1w% z8rhcuE^j$XX0x>>V4;#|BNgmSAAo7($diGXF?qKvtot1yE6iQmk5~wSCt(F&Y z3fIO<{&G+snQ&-0G&~1`8&^qeu$cL3{Qyd;~=$=d|nHNs`e6eQJ^wcU!cd$F6_KMk5-LTTr zld-Q8t#^pO1wh`B-Gj>>q4&tf5E&uXp&=fVTkfte^1oiuF1gI2n>SKn?a9|JoBnxi zGnvqAinaw?@H;g$VKSMRhv9(|rBHkEa)S?1r$yTkEu@>KoBnm>oplI1&NE7VO!X=> z`s&La?eOQ7^9bT)^#v!|!p&sRazuw zhfAA>qYqP}ZU#(0y*=>ih^@)_Yw>1@t=knVzZ`TFYX z6BY;NK4#-WG;>Bj?PywtZy?bu$|U--EDjmfG==iiHnj@@%kA$+F^|2E?l$vIA?D;l z*J0!WElurCgN>LMo&&^d6*is&SxxG^*J1o;HFe_V{0nA(R?lZuN!SJ?N!Wf$y5RMp zRGl$r>!9rPHe%{IFbyCsiF!CNAt_b`KW?waU};``FT7@~Q3!V~M@8~YJ!-&FlgYro zxYLnh6HjHZ^e#@YpuaHJy)H-+pm{A=Z4d;HVq=7aIGCp6i@TA%BsUH*(~2{M-OYR!86();e3nUUTyCwu!GPA-{maH;-u1cMDlLqi z7yerBb=+)avZ13?VrGe;k>`h}(7Ls0+CvM*UyD&L_pwJPd1#djLP4%nCU;})WP}bf!gH0(v4!Hel%cn z75r$^*6#z~RPm@?Bkx|*-Qxxxl|)$k#O?0o-Xq@&Wj98%UHk*ej-F7W9am6Hz2gN*##RTG#ngdoDRN22WcdeFMob4h~oQt50C9ZT>08>b#?rvw>_NdiU zyEPP~$jasCwCQBb${n{Y?zsCW!Yz){#>+SzZ5v=$Y5s!ON9ns}+`8I>v`gualE+{Q zyOGAm$tTSH*O+pbWUloi+fVgE!vDPwOAH7O$<9V!1-cmj*wsCCVf=4z2iR*N+rVd* z<_Z{h_Qu^GQw zPvH=grTo(mb)&j-dosvh&uJHt(g$b;BghM4>={E+tkegrWuC9Mf5KK41crg|iCbLlLtC}Kph7<<+f!XU8G)7Gvt?7pDX?uqk zwL@^n3&oiy{<^k%&Ku#5p*ohMWsaEwUkHYJ$p~vIblGA%KS#C0JcXK1zwMsxHgvb# zy?2N)r<#$clKc>5?lj&YOJy+r*U*|hdhe$+)8(t?V(G04`d90#rZsZEu%6VUpDNKT z29+5~%;+Q});za6fjLlYNuFxEEPBr2j?#Mi8P91Y7nUOfdux9>}~U~Jl<*D@4pAV)j~B}+euYG7A9dlX7sSTfVs<4+q4Y?;(8 zw8sOQMxfS4no=qb{|{r|6l6)zZadRGZQHiJ+qP}nwr$(?wC(O`+nBa7ZCiK$CvKcL zH{v|phl;ejS|8|=2A=-Wkwwup*0@q=cL*4#pq2z$^C}gud9VvR=ztD- zHPwbeYtn?_YkG&Vl;^=EIz?kT9i`z6vanr-wT@wI&ZCP%Tv})!psnxc6yVufbC9%i zko}9;-OniC4bmRO>L2bGH2>8WmTY6Kaf$8LI7|@h7?N!Bx45|@lqHDf+U|l~N5nxB zXN71Vs#O_CWdjEwXwdE>uxV;C*!Te1P{LRxZgdoJknV`sP4j_jCDRAadx3M878KMW z@n3C2EJ4x1BJ}O(KjVU}rMq|6k?A|oN3(HtvakjU4812-Y+j@U)_N9rFgi9j&rm1`i0B-fYqn_^%@!!3qb5aVbwnk40Q#o#Sq-J0|T$XFzPhKtal zb;PuhyE$I%k?Kh{(z|hOvUd%|#d;%if1I#8)7dT$Jxga!$NLsOENbuCMlEaaOQ2l9 zl+px~C<-+#kE~G{8&lR0;*KYU2bJM#V^3PQjA-xY7OG4(v$~}&z^#fQ$6B7HnVM7D zqSD3ZMz!1;bU;028PQ179@G@B;!A3bhz+mXXk(pQw*=0TQI4Q#5ka%k2b)sS zw3?JcPhIzOrQUh!-;`@@I|gszeYf%EhOW`?Tw~_Z>{;%25o<(chzXRr2bNEop$dSjIvcf zjiqsbD1423VcVG5w_gM7-1Zu2S0&jSY+PiJ(d38SPo~SSK$(8*dCwnWXn1$ z+C-(Vt)-X%{zaKz3#upK0k8D}8q~&Qs&RN`vPv>#WKCwWdBHN$tudD|^31RX>4<@B z*ZzS5)j1II&#_RoJG-bqW^ky#D?6zxvb7X%C?=FsDw?Z3oLa;84y<#dHH}}pO2~FPQjM|Fk|U?RWr80wr3p1^k7?4Q1hJMc zxzdlt%?+=)(to>f&L1JtV^EOZCqUi^<%?QR#DK-?ntL*wVpIw)PkF(9@rM z`b&BB9W3S3GlzL~fg^^_`T<$`lZTTf0!8|MOoHr908tY?0wocf zTGBM)>JmrEkLUtyh(;`x12q{AL_laiT2ns}*pkJDMDsg-*~4T6At))Cu{{*`8|Rk_ z8!Za4g1QPg5KA;!o+rp98MjFo`wQMuw!43y`VY&)VQfxGYc3`B&yLKR?u8jf$76Rxq zkSgN~&ObXU-7WiIq+D<7ge*HI-*XjyOV@o|pL8u;EBFdlQh$9d{pD83SLm!dYztDt z-N?!*mb~-^wTJ{4Fy{El8pg|ktrO$zkYXb4kW!-Uz{)|YbP0*Qh!!;BLP*(I1^5+v z3N4uE&_Y5B-eLjWZn6_{GXtE9Z-!49ge11f9^v>-bgG-3A|-eHhH3&IVw zAR~uqIEYfRU4oQKw{DQbr~H^-Jl(!6cY;ITz^|? zz}M5-psJ)ww$W&$P60IozjdepwyQr8q!w2XpJ6<|~YqGYw+T!F`U#9Ju-Tfz% zlLI~BN3J0!Yj#a)Qx@yBjv;QbLkEZsRP$*$$W{@t$RBw-j5O{ZKY_ zT$`0yHq7Q|U!ILoYuyuR95*H!yBc(PAWPQ9ltyVpK)D$U77NUAot#m7IUbL>NM92_ z>b%3T^!UK7OguV4LS8-^;&a1Yk(ZHk!&R#b6PCJbcUbxH+Pvzh@fR(!&3M$X1`W3{ zDO|1WNvWPoOwZx)DX~?;__uwQO$pV;h-{)e&Wc*XK4iF+b^je)h;WOp;jLJ5S2>u` zEBLT*YH68>BA@YMb4hWdxXihH26c1zEi&zW0dhLGAnT0nvS0ebs-4EW88!>X(^d+G z=K}fu%HFHd2Ae}=8V@izhCW=+l|ugaqFkP{X!PZSgfh2hlGOc5s@&yk?er?%|>c`}gXL>|cg>!1$)MCE=DrLuJLwnf_(8qG! zPHZodt4i95;G!Z&SATKlZ+T>g3ReS`-hW9Ji{>9FB%AwLXeJi>K#?Vp(ZP;f(CR?h znD2&8cN--t&7*s%7IDm&l`HDVCyhGrl|!EXB%R+huR88cru=V$c73q$PHvt2XshK>iYzv>2~f@6 zo-7jGMXYEQ87tB;oKo(`AE{<9+1xBz#7T!deG3_$6U@PB{xMi#k`nG`Id+()Q*LEA~NimhWM&YBYP9#})#4Wfu! z

0Gg+U0thXhAq+FFPQda`D0p96@%|KfUg6Px5@ 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

  • Jio8Z&#!c}tAz8ztb{t5 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௮~*}zcA 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

    0t?qw%2dB6+MpHyc8^sTjpi_YU-6IH zL%wlo>vPwfJ?g*8lKO}iz3&%zq2VP>DjP{7nD<7 zT8#{gB(iSo5`p$iHx7#jU#Rbx4F!cHGq07O<3f3S+kQJeDq*$T&{A8J{cc@ID?H1! z4|5KoWW%-GYu(KoJ>)|5M@T%ZlgN`h)x^UNE%He0h>uhVF-@<-#PPOo@*j+7dBWzuk5Or>gGjw$2$ z0?-2pZ8rOUT|7xL+$!Z^_{QJHhl(0yI)320v{p=kl z(ERK**1kqZn0_893pRU0gB_UZpyc$8tb3b(d>7RG^8zz^mM!%j4;=*DK!DJ<4XS=w z9a}_hm7nsQJsabuMP=7*NPbtxh%T%k=_7|jIbtTXL=@kC|a(o#VE64xR zH21$#c#4)p5PG)k1Uf~GEtp#vb#{T>>>>o`<_hc|7^vA}puKkU*Dn#OOe9MU%>;wV z@rP;Ygp$$<_Gm057!;I{h-3(oueQjT)(@7%9@*0)ilw6yBcp%+(6^x(H=+JcL3gPn zgAlYQ=|cZTj%t~I{R)zyBT_ib3rK)74BvTsUBU5z|N8fQ&2*2_^Lcl-=jHr*M8dou zENShLsM;rCdlEd=)A_M?go5(x_>gjS;!vex;;`v%@4nWE!Qu7B=-2!C*T;R!ug{N} ziQhs2FP|H~0@@=dl!W|09-j7H`McU2sc8IfF|>((P*D{6ryuLm=F_Ucndny%T zo=Pdt6bgje^S7_;mL^l-^G&qOR|6`i%OG4bCqo6UEXF?j zz*Qfw6z*w}HKIXmeF%m=lYSZ?2J!R|=gr+;Lri+Ic79nj<6S_$GJNoCL<;><6w)Ib zlp-6{d)fR5ljYFC@n@bJA6qMpz({cJ=Y6OaaN#jg+yhYh-=Cq{ zxd$Q}5aNOJ%u;O7hsvAu_lBh?d=~kD%AO*pj5*t8zGPZW!(BX%5lXL=8L%o=FQobQmIa?o+MMkNynIv ze6oSQ1iO10N=IecK6qIS=wP^P5|YPXiqHP+ovN}b%Mb|gGHWW(DmPS-I=%Wu zG?oSSc`hr^SYA~=Z86!Xu)Yk^@g7AvE%Bb82+R+&_l&G*V z3;=mKAt#K(QaCR|Fzs1qW%~*l8RQ9-v|Ya=LaI&2_IX4YN^mYz+~or!zZb{N-Rmyp zWEyKIRK=kW;4a%&Sj8*M*iY4a?c18iTb7}R@lg-08_2o(5@i$y^+}GmS-7ZXg-o#E zA7dMr_$Rbpy%E8i8(RjRFf#xRuYVR>5#sZ_3a*Y-_U^kJtuJ1~;z7niE0WtYnb5Nv^dLp!6uVvBMi?>lua zK~Z1nPeMp`jbsGAczi3UDqkze zlbVlA9rZ1!Wf5dEl|SXVE@`>1g42rZ)B5;^Bl-LW)7Ug7z-Y34C4H3qY-AiTq#_uQ zNGdQ&)-b~z3XTXbtpg|z~8b#@LKK5lqk z=6Aciiw4?aUOJ9C)PT$M4w?Wgr4*Rfuwxf?Un46a=41T=WIn_q#4IgzdBRR_OIc;^ z0-xCdnm*8n_&P0B4#w0ttVUKd)T8^mBW)mBQd&<6`50Ekw-fG^Y+chy{Bh_uz1T4y z98O=`!gC5>f8?y?oTLtCti?&5=2fdb?cU>EaJG0f*DB#Sp|jeK>eDN8>6EJn zYd$Z(#EuovI+SYgXH}kMN*oACmk1>?X>lVnA^_+Wi+`AE*uYh&PD5S6Y-aMRE`(Qn zgghn<3A=R_lgZ2EYISecdfD-rtZK{AT2vIIz+SFpi$c;V(}6)?T9tr1V0??T#r>9{ z@F>rAn&~^Tq)RwVZ`Ddk0rq5L){4aHm;@RTAE#Ty=t3|k>g5y?}KqV5e(WmGo zflW;Ah7{LsA4iBi-8%b*bf1NZHTw*|;w3H}Z#|xEpuIM{NMu9BQaj64IJ4lAhP}$a zS&lajL{J3yT4fff>ogpYPMX47iu7i{J!Z;Ctc2@KvZ#W1$c7&K=Im|i5qX4rlIoC%R1Hy|^15WI=)>D!TQ9c>4I^fKjn!rY;p|t^BtcmimBH$dOMSbuX@+ z^+!T(Tl5TNA%*XholsouXE0k_@;wj#y^ZxwC|eV;q?)CgL7V8W0}h}SDh-hKyc<7W zSRh20RzWAr6-?nYbDl<4ZCP+b3SN-~H~ubV(B=Aw)*~&9M;1vDb=BM@T;X_9+`>Db z5@+2+-U6gL#7nOdHV+)wcsLCmuXW`4ek8U+eG8k3AblX_L;GU7HB6gZzAcEF5ip&|WgOmw_PUnWP( zYt)7t8jsv#fm3|&usPbPNxifu7Q)q%fVK-2*PnN8qAaefYd7{4)MUk0PvL4AP*-H> zOUqUg^x91giKn!q1x(VT$0i9g@yPPulR~th<`;8X#nAU6sa=bU8ZD9mhG=V8rqb7p z!0-?goYGgvZ;FO9>B@_STd}B|{kOD)_#M7-~v|bZxi0cH$ zlrS5i$>H8hc9~^^^w+adlydR;Lgvi!=u4hQ4ppVxXOkNQ4GPU$yLF#&_7!%feO8fV zgwFDMu6!2{0M9M>18Nw>$QyCxuvYH z0+};OQ5Tz`c0i4{r>F{0oj^1}Y9-GHMcmc(fwmxHBb#(;<9tZ?9+*V1k?%}x9O2OM z-Z-D=JUdk^jz55)OFqud&@=)q!Ayp{{Xi)Wsg(AojIwY(izTIXI}8^7uUy9%oay&NW7-@48ERP}A&UI`^%Ts5OS-_hI9;NS`ac zi;WVug0ROlTVv7L=yNowMMJtYAWShI`LZ39eIdCdg6 zbxnPx%Jdp*mrDi4z~}514;D{bizZ~f>0KFSvk5$fjplMKl}%Y^=74lOPf8j#Vq}2>wmOb1a;2OZgIW-Ay zIpY?dJYanciZIil2vg7zjbSbBe(nP^VK?z{2h5FVR%~@fOs)1gv*qk=g0SkISpK2o zLRC3)d@b3|+Ic5Jbh;O5Hk~w@8j>cczp}enPA|XlFiwPIcGyr}GY4&De#o=uJU+UF zycv;rusA?VuC>0<-9SNKM2vN5$W>!!28jQph$LHLtz;D&<+(I3TXXTYWs6VNP%_*3 zAw7%*iIVK%!>MR%b?e4QXgW@aHdk3qmRSgG!5uHKNqNMkn=GY~fzIf~B0HF3s%U_^ zOm%#<$)d`XeU_!YxuteXz!|MYF)ulK%Ng-oNfdz2uPty&FLf<8=VE$6vt_=}-_>ZP z6+KPChzRe3`on(}{fBidq7-V55U1EmN#oTJOE`!XUh`>Y1YUd4K*B(NLvAnO_^;%~*f;r)G(Hq?{27 zx8-*;mJ#eIP3mI5r-rGNWiPFu)B zV5A=}57A>_r+|lvUUop+GYWA90}SzSd&c&Jn@-j>#OUm7ppL(wPbKm?iC1X73-S$m zci|6@ghm!F%~6%uDborw?1`DqWa}mF0b66m<5dDDYVtzKoAJbVV>!jjADV{K?X1ND zzQJ;+6EeqQy_9IEu(iFR%r%NrY8rt0~FC}%HLGO_OEEj4y>B6l8N%tQ3Yg8|cQx$>{oRWf<%lAcE zq0^D80aBQ(dP-V^xf;x@So9;X%-;_EB7C8_ER@^XJeis7TG2F$-u%!p1VbqdCGAw~ zUg@-C=ou}JDn_&OFUcIT&aqK$I`xi6g9bOief4&5b$7P!WKL$_to<{Um0M^(-vyFq%$yAy}#H$#)w(W zc%6ty66>0}>p1hR{ru0*?eUn7eEp#@PuMLF`r`-1AFtDPw80503{?TMO_;KnAHk~L z1l?&r*riH%ph0M(HJ*W+@=Z5`f+A76IW+6R`Sp+hRC&bhPU7@gFTx(faKTq&8qWwA>-qM3y52h9t%;ck6G{41~vvdQ?k z+MK^1>XwV|FK=-QHaVjo>TcL9p%N>n5~A^6#Z+_lbwNphuMYu zF$v3SE9(6s&Dr!w@ z5r|JcjiVrXtl7un$&!6Gj&sAI(U9zz>s)y3eqVf5bsL$Q%1NC~4P=zEPpg|hK0>}u zU3oHr)bY7@jo^OV^yQYb=L4(RCB;RC612hFOYT>@_Xqg>l#Td_yOXZq0Tlbh?7rSH z{sYC+D$XT$rno`I=o+z4+Cg zj4v5(sU~o*_VZYTEyZ;7tM-tFdV#psrRQwcKT<`pEXVY8KGz^pg*^0Q6tzgu2qOTM z74%}Ei7T>CCr}Ne2vFlUPQ(+7J5|!|3L9`fNJCws6gAiWXBbjnQ92L32&8b-qO9_v z(n0IXCjSgD#gkn0qCvN73P}|TVAw#UN?~d|vY9``Ul1?Q*m~?q7E=z8dqo`cvu3r& z1j(l0R`Waf=^i$&(X#5U-^rUUIzO)|vsgV*OY*w7ipHiLUr59j>K`(zzP|kVLx~0^ zMKb+b6nDvc-Ty}hY%|#RCeVkq4l!HAt*HF+a?Cwn_9qPN7Go8X$xLSu5C6NG7K-cH zfm>$*p{Jw($Ut)z*h?w+V5TWI>!DrM^RE*8BM}rAf7nKpAk@s~CW=c0c$V+?zneo> zG=h6!>X^u4rDM}QE|y0rDn9*)`-Lm%4szxLlI}hn{_k<#94}eTlx9K^ z&DD6insvMPd^g3goFpue9w_NaD}x9nG*Nlo7=H}bhLs*WW*<&6o|$YqfJ%Sl$7k~E z@(#X=*8j0MPj#2n<{!ybbwnEaO)XC{5r8BfGJ07zPjY$|N*UUC9sc%)Ip7gPc*ODI zBoj4xZW7S{LKV$4KeKXFZ`9M{1yIGm@5YNZdq*d)x0F__w9qSHyx&@kHZrKR*B&h7 zcLU((Tp5ZgD}A{ghz0{~{l}Jf7$G(lwj6w2ubOiZk=$4%1G=&@oWvUyVPAoKWi_eR zGj_lM0XfYWwFMi6^?S`q*qFKKpopdu{s)n^gBOt*@=B@0{H|;^1;I-q%QwjWiKLr5 z(n2#Of5{ewCc^`kW~%J7v5eEqXG4^qa?_!SxV@FV1h84WslJ%5{l%iX`~f7IX=-g! zgJV=!^Ygiknw}_F^Ufjneow@^ktPc2*B)iu-{NOWEs56Eubc3O`OHC?Z2d>IDFgFT zoqhs#Zfc%vf}q{hB<;Bw16ugwdG)rOuOm~sR_v6tWcb27_q?Lw6sFZ> z(`_tLX^~SSUHJxK->7$ZPXlR5K1pF7mKlJmGAve@|NF%-rb&9`9*U|NrR^Plh$*42 z!^~u}aCTOw=fK%tP{k(Gzg1Zj5*KBX$zv!-!^mxp+!q4X<;Ng}bQhW;By_Ao1$yLw zFp~4#2b|^FQVqXpIu@HV`lt0L)X(npnno-AEp(#gg19eOb@vO8|I<~%|K=#S z|Gg2%|9_QW%Hj8~GQJB8SeqDNB-KIGK???*FAU+*L> zJp!Kx@YD%>*onX1kW<_=BTDzM|9xKXY#oyXyuO~k@9bTk{1S}HZjcO9O7e!h)Tg;+ zR{G`rHo!0Bau@i-EXCLiRN)i$@)>@`?}0dBTrR)-mkB_htG+fuZI(0bV9`ok*!1T@X!5k zP&Cd@FeQ3!!3iz!p-(OFsI1HGpX(Kc&)?|O9P)Yu{lB1>zAav!8|4}!|7Z#957V5po;na&&|Sz zpvC-kcgjxKOk_{Yfi&&>}Bb^KM_@Fn$!L$`#s3oo)8Ha5?PRKlx^*)|v zq~Q;8oTdn?Vk^S~JSwu^vU6{=67t8y^yaE^?jB-J#?s&j>@r2)wwr)IS>)UMcvW{bHdh_>9uA;ZaN_-pm8ElkfN`*qz0hvMb6(=wfg zXMqds7|8c6T_Y^;e5QAl^ptumli!6u<^%MR%>K&uv(R>!Xw%u^gip=*>Df`Q)>#ZSQnzzi zLYM9{KNsVsj-;-{9juvDLajj*|-g0P9>Y;07OK7YNGIS)hjGGZ|JV+ z4O`OLuB-y`P8*3MH-+xQl|)Ae-w$xV9emuMvx|Z{kDA@f?S0QUz?=V)$m$co#A`rJJoDP+GFx^yINrm)DeC4w$|FJ40 z1i=@dS_u&$-KG!Dfixi7CCp~XIf{dEx0z*&K{N$IFd8n1>htzDG(7p1MQ|t`=3roC zHmPD9y>~emLSYMZZHsb(`XUnoo6tQg6#S4fES>b?<m@>KOO?${#rH+(=W(2EsBLta<6lSIZQ-TJb^{a@a-;#`27HwY z*JAv=1@J<8O_<@N#M3x1Ubl+8{nRYXd&C#6M1 z)4Xi`-sG?@eCMcF>}Z6~0PWWZ6ge-U43yS8#HqqyFd@g+|Iu%)Cs(Q; zz1}Bz$4+9FW4y6Yrgiyql&`M|sFGYk*ro_3jX#Hl2rX4yxE44JkE=!J%BY%%u}WX+ zLTkG+JLtqxI@hE!DhAgS8hkq+N>;D8W1NG1w{z?tPE zeahO#3RWV9cA|@gc5EDrUEn|2ieBVohTNP!*oxT{!@DYlPTq|!kC^R^s=kl=8*j#E zl7_Xdf)}~?v3pA;T>V7Z_V=mv2iD>?M)?Q=Nlz1j*4Zti>Tis0Ex~=&#TxLl9uYU0 z9anvuCH4qq=A8ijDD@L_+v|0l5cU(_ zSk`o3{*(*AB{iAkByk@J$5sx*Y&vD&f^DC$$smAG+1z%|e0Yq3?fd#-aPgGJgnw7p zUG?Ko#W9k>mJ}!^B`!_SPcsL~1L&OKo8o7uh$Lj`es0ZcosFRh>+~ zzyevmkxZhcLJHN4!vRjO2xV2>lkq@Kksn7|AluyixYaaO}?iMAQ7P>Jd;|WBVOrMZNscG+)#Zl-adML7UMnS(L6Md4CeIf>mb%qd z^MdnYztUB01ZzutorqCm$4I(jE9`nCpoXc7B@v2F=!7K9N@VPOvT(g%GuyfgEv?m1 zHiU#1252=M-k|{*QGaEu#cgUx*1xl-%iSa^;PrTrGipDTQ?I)|b<7)UB=fNQ%ZRyg zE)L>+$2c}=Bb&FJe#8eo8-<&O2_sr2dXGK8C@bBqi}3RIj4hjJ+r~eq;(Xtl%{`|& zD-n5PfP#{|Sg-*#Y@L7!{MpI00vX9&4J|NGO00e3z*g!p?}_0DTFLH$Ai7^-W@37; zTD4f)#TFsVggzZ?Bz&lp*UAfQA6tu4k&9>^sa3g>vRv>&ksp)TyGGsc9iN5zJ7O$Fq_*Nj29~)t+3pdmxpd+r!679cATZQz>Ys{98xPaT{)HEY^@}4f z02E~M_ehSN1B7RH<-_P_Z_bn3KSe^^uxfp`cA3wwvB3)LLR;78vpfDJk(|^tGH-fLMH(x0nd^xlUdp=>;x9o%C@o}I%>QCpC{E8oL&O-xN~Y{A8_hTo403GroZVA-|vuOa@4{GXWT?VW}1_O zFYDLMNp+T0FDniU;%NukvlV&%ZHG?)=?3?J35}FFV?4b)#jGkraY!x)c@{u;EN;ae zghCe)u&FlFi)TAyQX|ei#(>jAJ-NUh66&*^q{kKY7x^=q)-%&S;QLP4B6&a>S3R z#N-PzK3;?}lBt^+3O_B!T#z5|o$rP<81=yloze)cglbc>A1Ye7SIZ_JZH+1_s&lbV z{kyM@EQiY*I{GM|8Nut@T9%{hkd%3@9;s&!-L6y4N{B)H!Nd73|0Ron4>&&ys`V;I z7+!+|Ec~HyAbS|8qz z&yk;h-+%OfO%V~)PZcUXf$C?S23z+OOjq$T{DKc{n)2e2394+bn!y{yp4#mh|LymF zIA1%&yW>y2xzDWM^1^Dx&vWlzYBFyh<76b#s#(@z%%z7S?f=hX)i?_Mq6sOjUl$3W zG0gilLsMChEuI#$9@21{Nw301smfFeWn{TeB~&`&!wYM`n5=?6bBssi6?Ue`4`$GI zju4ltzg|G+L2D+kaAtm_RR0eQC3)dKP5;y4(bB7)WHlgfx7|esmk{E1QzAGp zIl~EH&@xDdI^#2{=RhSN!7S(hU2a;pK3A`jkYFv)H5(nKSYiL7O3epv z>_Y^fN5}4xdMDGAF7@if06-^F5?cyh(-M~u68_;=0Qjq-fxx>yVy5Gs-4v{AajKXS{8Fl|v3U-8ffm zG!o67$)0^clsfN2SmS%XLuVWII>o8B8ERv<2j%CaB&!Socq2A8QELYa+s^TI|0mT} z^8j7Hn;tQ0GW-u)?z+j#Osvn%I7#>9Hc*B*E`6AsE8a@|tA9*=$3X4DjQ%X*TLh5l zNn_&$EN(63<+_zTfDU&x5-mM+j}$LfodI>GALhxn8r)l~chD!QN=KOU!L^~33Z+Ft zJG|!hME%og-d@?=(8?<2PGNElf=ByBB&bUp&Z~31tvY#0Zc9p$bR9D5AfJzSyzm^)ttx zfdPyYYtMSjRC$2*vowLwE!pWm+Xd@?Pt()_YGqZu%uEqI|CmL{Nj*-78Iaz^vk5k6 z3)DC=@=||7b(CZ~=EST+cN}AG@mbAT`t~B_F=qSmhDOnDXVy&^h${Eh@N(qox~_av zue1Aktag$+MM`Gv_)wwMA{^dzds36$hKuct^RiLMF`iQGD{|Ec)sM9R{Wu(7DI;fn z5dDwID~s1Yq}5wmKc9Bu2qt{>+wjOWOHBzw(4LkXxAxx>+LOYkNutxtKS^)$s?2_G z$yzbYls3#)ziin`%f25zY6`Sw<2KG>OlMnr2tDRuw`Rj~ym<(v&$Yv4nll-y7yj$` zozwy7h2rNCl56o8AQEd{vxAccLHB3SU1)*&{@B5sN zJ3>bo|7mtWHLfv%GiO|2?g6()c{tC5+zMI|iO@&09NQH^8GbZN&9z|IOD+MVK8~iw zt47G)RJk?kav+dtBl~*NL`!F9vCgAC?c!m@=tH5@4!DorK57wG8BRs!g1PS&|E9S% z_E#swsA-riazB^NXL z*>C{XnH~PdlziXx+l5$apOH-osRtU~kI{^jvyay20J&+!pD?m0TkdQ6i^TaLFtugL z4JwBYx1(!s+10Gsli)Y8=(0@F@)=lewFCe?7pGe5b(oYT!e3?%wSR)W%{m`&UTp(3CZx-v&F@NNwJ%RauVL z2}ZM%m;EHPtT}rh6cWP9JVSj0Bw5tz072j?o#%?@zbgSv9H|zv2JzbGbv0w|)n?a8 zNGR-TyM!P_F@#M)&?II`=dygCE=1|JWbhe`W)^SEDO729_B;R-VM_m{sCAL7f`GXP zC7I|RR!hh_# zqDTOx$u%9R)ko2%`RepS&tAuXV{Z1am5#&%7idqd93QX?*Ujo)rt*o}E%^f5r*E76 zh*Ox6Zfz^eGfhO=$&Ri}&!QTcOC~c5LfiN1wybK>x}#&CyD~yN76a+C2Zo6hyxG@_ zC?)A-otRB_cPyornkdI5y*^1e++iA^z=QL{&gyjK(=R6*;)G0b6I1h>7t+SlW)t}k z=xyrBr6U57UQz+o9$_VpB{|gZHN}(8iUVHF7UY4FKbCszvbtf?fryISKiTTDjhTu& z>mcpU07RZy%KFR-{-9lQ=)UCaB6BB#o-5PdAd&Hs&XyGxCgVt`W|#l5#wtNZKF&k} zAkvkJCZCkR0b2pk_t84e;>xwkP80YSh{P;$2_E(^*@B2L$`^{ET*iM6ro79w3P%Il zGQlF4vS-%s1i3%;w(ML)f2(2}6F-2^fq)*XcO`RC^a*rnQpaTE)f7DZxV-mPr_wR! zaqF|lqk)TZhhw#N-gJ8&ef24IoZTS)U7c%Q9Eh#d5V&2tC(`kSD`AgL!qvg{_dX;< zT2m1=n*haf^M~{y!8{Ss>ddUlr~1iXCq;TyAfI*nzZ^z3&$xPb z$k!ctKA!Zn#`Ab{a467p8^{rz!w|A3&tfjr_`xGEk&X*<9j7c7Z+xH! zJG%cbtiZ(Ze^}X(je(W%{|ze~vL*cAJVBLapu`@4%8t5ATS2~QU}h}=U;b?v8U|(z zIq5(8;Y6ZRWhx5Ei$hz@b8fC`kz=q4eaPf?xK{YzZDpD5U$dxwV7IeC|G^3XHlW9z zrAnQWu}o~wAl#ilZx0hc-y>J{^gkYRxCCK@^YZ+^tV?W1z8)L^EI$BTA@o07;b`FI z5r8XnmtuR0xPu7zg1A-VKhV?rdAtoQ`xy#TNQqnwGbpZAZQ?-P9h z(RbWW``7D1*iO&aNeMud$AycM7WCBPv#Bo@*83^<^?SG`^=!fJx^>4Kz`4)&dsjDp z?++ZZ;R~MuNlI*!ssnH+h#cM^3ks!qx61)Weis7PxW`<60L0L{&M52VVkH$ppJmJ6 zPXFf~cmVB^T<%MqpxyWD;=k&SU5_Uv|G^4xpRO1HSOGhv?cuBZFuzw0PwRhR1upSn z4SW0Z=O_6V4qPAQ$f;ZA2BpI!BmAEksXE+0WY{|oij-baH9f;Mw~VnMQt^tBjC|N5 zFg2P*vlOEGNk;5GW>_75xpICbpY88y-KG$O4i}ZII6v4a*5CW|{QO!JUEK=N7|kC( zb?^34-8zNqz7Ga?B$Gk5?3rRnE{NfH!EX}bdoM+ZlzuUdqbhX@hKl;hz!fNu#ucxh z+DO7`7|S6CAwHeWyF%I=xUpClrL>b^O(A9TXu~WEXpW__>qZ`C=C=7?wVWR@IMW(+ zmJ7v$ugpU+)r8;GDB3npscPM0w?n;m%Wy5;#_gXqY*k zacFOBERg;VE`sjctr7n2N<;+yDr75nHdPm>BcNJ?FL9Cnp(n4l&C67=d*~>k%Fuk( z)UcrN?<*Sza46YJqV^R#jT<+<-lfwhONv4 zk>PElv#pvJJqArFI?sN@6l{-!=-8l%_Z5Q0N<5w7D(9&*LI>4;CcDd^$}C}N>oQoD z(xS`w9QT1eSkT9$$_?chEnG7p-WD#e61GM#)QiDEj5T*6f@+k}x-XQGXck9#sJsTk zaki}*nrSB}<%RKEkLx|uuFPSrWar(&_>?NH>Cw4ZN|i(7TiFdu7Ui?y>hlFBYUN8c z8x1hzy1gQ@?+%=4v5thb0^uK**%TF}EL-3d=-A_Ib7SRg${hnkS>U=^te$$O-{glX z3YfvS88c1G9&JyEql3R}H6>g2cJ^$H{aqmkAoge}&$Q?eG!qOLoe^LC4Z7J^TIT^Mao1J~fm6^kKNzsPXtrOTCAiaDYhdHc38)YZ9oL9)C zGyJhjIL3B@g>s;D?pj!~`U7VT^_!%gedfSr1+k_A?ij$_*~ea3r+~TL8^c5CZK$UX zb84c189X5}#jPTSWfe6ZKI5~qO-Re>D4xuyTlGvO{L8pteDt9;%Wsqd%>Ke^5I_~0 zyN^E)#$jUZgILm2PgDjRCNlNf!LmpuDrEh+<-SWWpJ3lY@T=H*NiPP{po!$yy^5SG zqNbqnYhQs)GGEX=d9rG#;ptTJA7h;r9YP>)v1G#(&H*cOMZCOqNfdT;Wf!z5Hm%lS zwJiQ+*qr{vQDZ8B(mKLc|I6eEuyT<6YRzyZEUSgBy+XtyL0+*SinCIBWnHAtIQ!(o zBV0<(&h4AUTc05|T3<2*{)-7%(c}@6WA}8wnoto+s9!5YF2h0wWF_8)=>L*H)2!iK zb68KuT-@$7IXUs>&-!+vW0&^ci+jtL4K(omOmm{kYpE*Ccr*dp>5iD`)ZS_2P6aj- zDV8gMfiR?MFung;bEe!Cdu(PNw`NbD7P*;6et((ZYd(v|L@%R8mo`u9n~ zy$jy3N68_qC1?SGGV~F*3sHqGc;uF}8YgQA7%dW}Z)!A~Ww970aYy#r2YU{eCU`da zaN4CRBaxfthzaFTE@!;sA9tx`ArOqgh{noqc(GBH&<=lGv|c%TWKC8KLQk$eHtNyp zj;^m1$tl_#Rs|H^d$RXcc(ttJyw*-O!xxNJ25P%<3cBX0{(ZnhhEnoHtNLJ8=+QXW z#ima^iTR7bVS_ur|g)89^c0LKpF&InyPO2U3~@`6qN{%0vSk8YE!) zdc3o&EXcGQ(>^0~y-@e_cUg8tEzKWrwbjeT|c(|=i`edWzfG_W~1L_gl!cu@6wS~hXW-dLrW$Z-N?o_)+&4+rZ-zWH0XIWs(eI4apZ8mlGw*r5oN_A#tvL*SBVT*i z*F}BG=g5+QfP!6hUBK@6rH5E!8ry<}B3syLZ;tIo!?9l_8#~x;Wy?eyqs1?N3au-l z3X4l^KC4gcS)VZVft0d@-uRlDZL0p}8Kz-ASYnj%^k2s)hJvNvIk`AU6DXl^JCLg# z!9~l=r)Lx1UZsX;Y@_l^cAQ%62AG_~)$%HzZkw&z*L)PZLxc1RlmIDdg8We@jD#bw z1ffHAOza*{wysfdCk`=aQo_3YXtZN7$D|xs#4B~Gth1`1kQyuT%DjR$ytB{o$CGC} z9MIK5la)T3t+0T1j?`aio>R$V@>kxjUY5sS1XxVUjMqk^9zd#^Ra~;}|FYUxUq+#U zV?_=$=@j(+iEIN|?e@l#4}4H5>Q|#30Ru8$@T#qJKc#MtA*Wu^M)uT%8S07GgN0ri z|0qr6<$nzevWdh#KWvUuLBh6Tq6NaBCNNN@ z6-HLZle3*AlL`?d2%l{{nNv!^6>*XcW=9qvUHtRk+bs|MIJ49^zwLcOc{Y(l^}jF> zWJev{jF0E)d29+M?Q&NzFH}&zM-uTo$=rB^_O%sq4hWhRuv}~GokItO(_MC z4%!+r0xy_m%r{*Xjry!;rIw#+0$9OJn#KIdk0!?EPYq_*!v4A7^2dU|k85 z-Oa<4&k9|4Y8y6Rrc>7##b&@p!ZddJxHny^?e9XoFW`+G^`Lt6EyoJ-uae08jd}8R znL$I8PHDn6mUx4+Ix^x!EcqsqiVr9A1aOqB;tq$K*^N> z-OGgq)XGf+$@p>Wi!29L3ksQyWt_nkUCq>xgZG!jn%uh8xbKil#{)+ZKGf3$Ds?)+ zoWflw22=5U1bfm8SxU*TrFxr*b!ndd=NgmgNRY9qDxyCHvl0?RMyL)#UdSk{=N}5^ z1}bmVEeuO{ce~`G4zWW<;uq5X{Qthqw^#=bc1|k?J8)w zl{YRjq+<_jLn1Y&Hc@{gX|fFeT>z_iHTrHDBB)OXfR_dO^4zXQ`$-Gia^1dWk5~q# z{4zECCy!piTbLBNol54FGodQuQikXQ_z|ovE`lyOh+g(lD2-Oeg)kM0F*%WALWI7& zwLqy_Ui9I8KG<9r(_MZFat2_gwo*N!*3aOQRS|pu4Ln-f3aI9c)(nfFTL=uQ1oY=9 zOCv_s-(WaT@al7Jp`M?2dv8R8|7Sjo&k|U*vK&fxnl*22MKigXNe6YWtwvhK^=;Vy z-nW->@01C}lM?1*t~;@fEXQ#h9F$yTq*lmXP3Xq&iCbqEmNul3tz2E-y6}b5mfcRk z>7O)GpICOqR4S9j-7iYK&ooHNbbNc%Hlw;@l%|B2sF&{2^^=usAy!M9F;;!D*NNH6 zfWI*gH04aaqs{v`yG1vy4=#ZvjFq}8w`UCP8WAW{*d5H1D1pZBV#Al;^_D%(6xhoi z|12_krCU|F)Fy$bjBuxbrc_<@H=VoerBUA8;Z*j5m99vIbqS`D!53nEIodlA?-L+2 zoqg}A?ij!d^9if!mZVa?&1Iacm7o#V)HNt5wVEHFI#n_DUEEZoK|GCii0;!gv z&Y@TLULHpQ!EjF8*$=uX=%ce zlE~wyU0bEQloK+}9W|Se??=IP!w8%wpO2JR~sAY}m+ zeq3Wi7b8`=`fgRP#e_->T@RGnXBH1K7>nOm>bYtVa8UflA2akze2NEFSCduE(x2gO zTDNOteFRVnaYOVO5&QoJl~1kUg+#*!B0 zOo1LuCGa52KPJ#9N7N7872@*tH=rDxFQPs!q%qefz-~q)=}#?wDV%@4D`%W|)Z>N5 zgD4g3Gwl_hmjwBztKpo>q`yRI(?dH8_QLpB*{jE;EnVJ=pSsCjunGwIvmyEgtB?KQ zk`@I&x~~UObe&XTLP@*mQH8V(uUE{MG#U1?|xzk2iBfLW?*@$QmZ_~)!i0S{-I9}PM^uPYZ=v`m55lV zG2_CvoZolpT`^H12bGD20m5N=YtgmmZ+Ss$Qp0XYgmd}&Nq}QQ2fpC^mdmcZT}|-tR=e|g-0*@ zcgaPMy}KhR&)i* z1!JFMPNz+aYq2rgAf#CnM-~v^LK`a_S-J~TjTqV{GOSP`ea6;pr-XK!wkR$S@0gW_ zM5c|mw7uc>vP8`PosG7Rm0wzRNWxJ^-)#XwT>qgbwqin!Zf5WX^z`Go_EM1(!7MnWx z@a?jMRq1{UGbxsyp@e-qw8qC$O8mUyw<|bXfeT>pUBK~#&P4X}+$YbHo$=p?`DeKw z^gJU@EjHPKIuE(8Cs0MOEZRM;ED6fCz`3^!3jqN`?94IW7X37xPl;Q)A5uqy zZip&2ZeWe$rg~dPVsRR=M?&JLd5Q+L+8)QLG%}YGeN3rRDP}&vN(z-u5rxbXTHZBm zSybRCo}dUDb#racuhH_`tOUx$Au%se(${n{7Bs90s#B)-ll;zOYl7lL{eHvwPNPy! zsmBTrWPB4;E{Wr3plZ1{I)NI4VAq>MgLpZ~aoIu_EKkJHT6fjFas0AHGx?Sn&;45 zw}YgIE8U>DR6p=w+$a-X_mllw9sH zO6N&t%nmZQeq{8HE>!^2QAx*q8+K7oEt=vpbw%7}RwLC_fTJrGE=H3IvknDbv8)%Q z%#eNnR(eS(#k@>pqyq%)Ma@Loa}@A!x?IVw=ALB+U8!U+zLHTKG+D#OW}LwTI@{1C zmJmbHZp~h4z!L6hPaQ-Lt$E=TBi7LOm8z`T?Oe}l8_7ZSab6Cr17SK*tJPv+%Z2WW zL2nQ8yhGYAX(G@PzhMATt}NbP^aNGb!V5fODY@d#K=uUn8ohc6Qx4!d2JX^f1bRt* z>mV+LDP>FTeFT*wu0uWwyJ_0K{Ww!WKeu7t#a24U9KVez_Jz9ES$|1T0rw!cGZLch z#)U?oe5X@i1XJCPJeq7J@d&V%nTNW{-3aGy(INE`OGuiOfI=F~zpW_Xz>_(FRIabAVC+C^s%?eDpYw+u0o!*s zpIqiFvc#mwa1Kfc8_su|?t|LA$WWFXQca9k^P3bw0q&U7KE&iOM1z{Wwl(dVmG+l6 zE;A~jDG_crCG_%$ga0!)9d5JYic|loS*1Ld)x;25uID^(OTed+ALNuB?8D5%+5)pY$_(jixBvow9vGN$CvNw95oKEYAGpxWkcmP-7DmDD zHytyukOK5#B{~j@8Wkf@*@LXXHerzM?1?> z*^_NNqc|8vECme1%)~$jya~zNzTl8acW{B4Oy6U_pH&`md z>}=Nq@})f&gW!Q{I`SVe?|uTI3pql8@M$OD#&G~zNP^&*DI#&CSl*^p|Mz7m-xkv? zUPP{Q3ifh<>5Vo2mT3@(}J?!HiSe$i=Lz8|_H$y}EgZRIRK>-Xc< zWj(HAC9847nI7xmpW=MBY(Mw1e=^=#-T}VE|E7l@kI#%Q9j?JRFqDA)A&}1$jb-y| z1FdE2<$R^ZUQL%mN6{^KfUbuKAJEGlNa|vRCf+P2Vx|Io7@%(Mizhj*?z?kAZnBiL z6Qfzl&-)L;vVN1p|1Q`6ztr+n@pLdHpck~Wvv+}}S9UdW`Jc9orJXf2y%+%tG`*0$ zlZmMlfi?pH;G+vouViZMLZHpbK*!EXz{?;U zu79UG6(5}L=S|N~HTKU@i~dgcr<{Aw_e`H;G^^ZjI9(yssK?bXZsfoHGlQg1^4kPfqu;PN9|R1%^P-ncTR~yDHnz2{L-u+1Pnq<>oEl|2rD$GK#E;!bZf0K6 z-2s06rzI~&V72?S()*6#S_=Q?)k+oE!Us$!+Q)9pv-^aZOh!SXwAu$6yP5H`c|r2k zT*6Yr8Z7m{BqqnDERDKWuTqq`S91+s?(giqm%Fyc^1IAY^QAB)gJfXl?}!70o{l^A zsg8v=ps8KSE;nnX?TpgEs3@b|dhG=@TUn;5W;3kw*=3yEwbcxdiC=~SvcLZQ762JV z>OJKRn)fNJxvfqL1(hj5S$CX3@au=WH1*ULKQQK7$ZdS*IS3tQyqrm;c@m5vzxO$k=-e}_fUxr8QVYTB%$zxf z*XP3IQW^I#K5(~R>|N!HJzBIt)SKW0JrlSH8z5II=&N6w&}1t$#+|OtXijjQ=Zo*= z@h9s8dp#s_BqN7s#HeyF8ZFsTWRqKGOx;bq!2^Y4@p+b3n6N%|OiM&ztB$gYOg67R%2JmDut-ZlD1w?(G+f3{A9+Ol^-=yrzgy$h~;h22P~g5q@Y8DZT1(zT~U`C$s^gi2z}rF5ExA=4iWFkuY7RMhYn zmKEAgbRXj&hFOV4E0j9DsJFk2_K)G7?bTt?V1c;|_L*&fB{|{b1~2;CT3XysT2_y? z6SzIpNW|1R@rO|RjT4Q>e9oN|5bCoG(Z+7zwSJeWLaQDqSHkt~qic&y@&)Q=`^6Kn zHW{3&#YFUs&SRR#`kX?ZkO*a^prn8=?R1EXp%pi))Vgk>oR$BFs0 z6P+#71=*Ke%&O^Tg9Xzi1YxL+(P}J4=muXbE!o!&Nz-8y2U>N>5JiH2;6;0m#(`Jh ze3j0OWvMX7a!Gs6XXV&l`QA-1n@~gpv5c^ihdzw@UWk^pt&Xj?p_tx5NT8Fmn4S=p zP)!(!JP&79yiQmaccJXJ(Qg6S$AytcdfUT3q_@d8hD$3w;MLK zgw;tsbWlsIf3Qn$)4u7!OMSQ99?8a&H| z0SS8OiWOF*@urzYhlg^U5 za?rg{9xCo@Mj9*0hc_I#jyTLRX|fDRgYzpsIQNa^G#g4JIK4)VR?QMbDg;?u$)xBD z%*K~Z>Y#&JR;9u4q1N@nI!B!R%%S7$jczt{gOtlXBZxM;G`=pa5~hXHNs$W=u;?q| zrHYnDt)2jo5v7VPNzG=5as@U$PU0|RUNoMEgmrQ&GX$_WpK zU_1ysy+Fl9ai%h==<;kd(Sw3GK~hc`1Dz^(sFK_yrAZhl6#Tk~yKho?wWU#MB&hXP zH0Xmu*loVMBm=1pN6~IU9$iL!FYKZCVI5B)JSY750H$XY$*OBD+P>G?MLll0(aQSF znw)PE3%};LYR2{(?TOc>E(F-`Uk#i&-O&??sK3>^wZ?lY!gB&)3O3-Mqe02XqdD!0 z`z%5(?up8cCdH~A{+(l3;rR<|-94cy?^^ggc_6292l+397}L_9Fw!{EehuJ<+(Xm& zj{k7%b=M>RE$oYkN|-nGR6|u|UyU}uQxKn?1F+Y{m^zvbqY#5nA<7zRtNo(!kstcBQEhG*XyE&?L*&*;(1dC8L{x%?$@(2pe5pRjvG0%OtGjJc z@d<65aVLg%j<`K#7fX2%TZiWaKd@A12da+iOsz)8S)P<0glK=&gE4~!no||?uO|N@ zvb%X4fvGzEbOPX?8aAd_tM)qhPWCY(xHVofIpi}w16g#Imc`r7x*Xori-L(8&!6^u zG6DHI+u;>2UH2)qHfu5#57eqSp@b=UE&1j7uDy3!C2` z)LLIDT!Ha{L%g2UQ_?cE@S(;U+DdxC1>9H;(3HE-EH+#K}rod3yZ8!n%m~10ufom); zf|oINdH>bd+tS>`$!QycYaVflnN(H4U`E~G6sBwJS7!|mig;Q%VyGThZ#owzJ^3u; z0R)JUGsva1oiCR!1-+^Hg3Euc9ypa@B+bL|UIm(M4~)7KTgjCxwZlVBIGvpuvB-Lb zb#&nDG&<^OZmN2PL(qm^E4TNM5U}=MCNsC|uxds@)*(RD0n;!+Sppp_n|I#BGxLm> zaZ>r%Z%luR{fZM{K>WI64B}7`4|Zbu*^BQtJ5=mx?{IVKL%NF|Mk;NPxs#7L z3u<$buW`U|4+K)GE2286+^5&Y%h=-_Ofpw>&%b_bGHW9lRlQmFlMu_rH?A7%eQ{Fh z7~g|kNXU8At&O+LYxnw9y2hPdYvq;}PCN@b_=I#O34d%#o*napYw|ul!I?<#^Pv~Z zza7V{>xxTA{EyFM`U%CqmO8iJT(EIMI55yeDZ0%VLr2=FVQi4s=GQjT!6F202DGP1 z$kTuK^&e~9jyo$QH`E~LdG5J!C6W@Zz+w09w#9QNXfgaru#Hb8k)^jUVV_)Zdo>=u}cVeDEE)(2#+4QUBF41Yuh(bLOq&akSzTw7qSJVwzhaFJR;eMC2{@uNZMYy^>|2b5QD%<{E`;s^_k}!qB zbQlOjQ{^))95Rq;%)2#h%g8A>+Y`aw_PRM1uhD=&DC#jCZ`wKA+{G9K)w1%$E}Yza zwOQ~@7UwW1(7JV5!3)yYef)z9@;h%`U~+p%8CHbiwl6&(t=Kq0O^U1LSp*VV%xGL6 za=&VG9UB5JYax{Uun~-KEp(3d_PiZcUntq+;*N6KCC|#7Yi4&ky}8OwBtjg@oJ-z3 zB_#2DTqIbIR&~4Km_&G@{g`Zy2-|+$Ql@PoO_=O?_+(6>o3n4l)X^8lN3thgJrfzrNGz zZiTQ0LzW{2$d?Y2h7<&eCyIZ<289p*`Cbcxbvm(#SqDf#?-y?~EFmQNbvtbNI40y{ z0qNyK;{3u2L+U-5i4XE}!q&|U=fC2XAHCXWcTtS_nKtpHQ7rx8nj;@G^pnFWFLrr( z&5pr5O4E6wta&2WbEwb6IteN@Psr!~Mg-_f{`|W>wKgMv&3D%*9g5s3dg^~%>C9?; zYb3-k>c^Q{xevxYhH>^3PXw`;J9MyJN$3+BofGT=0UOA{+XOVnOiv|N=!;=W@_I~z zxFe|*{prIt{&uqJrM>M{|M*@RJL%OZq@V&$YB`@}&|}byI62Po)bj-@1nB-41W0Mt zc=vRVM!`9y-nzG}snOIPCE2@+d7A#}gJ2mJGeZ0f!R0GG0Kv8`zo5Nk5wM2Qv9@Ks z7!UN2Q%f5=={Q9w4t7-wbSre!(z;M8k-tB`CT(n4(BO!sP3vfRgQeEB+P8?wAmWT- z^(;>w?&mxPY~&&~Zxa};v9#R5qSM&Zz$T)_b1?4HBCh~Ki)F4URhK5I>gjj`o*%}; z>xTZ}kzlbaYgNR_KSEJc)fq{akT1mmr7%G$2t41n($Ns>!@>kxT9n#uwHb|O_;$Bi zFOS#r*50IfNfL_j-+yGUtM&e@Uzr+$sO0=ov~5(a;r$x=)k>ktUU6UlH)c@?GEMGh zgXfvA2t}DYQR{rKIOdA=9Rpm8X2w~joGxo>J#4!?@5_cS%a^n$QSw#~Ifi$~M3J22 zIuK2eTKJE~2F!~&gf4QUkZYmfhu&`-#(9x{Lv9&FNH=Fg^zfs?URkIS28{|v{OmmR zc5_EFkQ^4jEuvIA4xHL9&=Ns)ku8Lq=E^#^@8v)Y5Q#c;Qx(j=%vzXor9$Y6`5LVe z_pn-zgWGlTz%nB{D68dLYwfEmR#9-y?z^n@?Z3$O!o34GitWI`Z z$Cdr;y%y0pesiq|b6EknGA?==wX2kbD+AKfjy`3g)BQO!nj~01VEbvO4pB-5EqVr_bPM}jn67G0IN42r++(#`Px3qRVDZ8h1Y|n_d@ZHnqD>w5+ z@W4Q@q^WstodXH5dZIyACo9E^Tj5<(KP~LmH}_jJQZgD#EWf68G!0~7Wke{okj7uu zYTP`V1xiJrn|PUC8qvKFc1_)x(^!x;`FEb9{#|m{e;!eSDNQ2(&3wJann_;`*|oJ+ zhdV0KYDY=5!A7;EbpL*2ix>dP=?D}mdq$rHCFXia!c!V{1QdI2IMH7dcWNN^u!P7} z@Q3X$q_QVQu$#&XtsATgYO#<7Y4A~e@xcVtMr~y^AM!BTr#M+ww*Vd$tL>cL-BZz! z7q2*8eUbD-AnVB+k17EZB~$eA)0Sl)bj0Y0lW%Z1dP=xWvPf`ovPhD+7pG&EY7B<3 ziO-f}3`a9bOc5FmXt}%Fq2fc6ojjIpfN=zlCS$5Nm(8dY3iHlG^|kQ;D!mGfgWQwZ zq@q^kt8;bVI`G$B-p8Fq7FZ5C2!L!d9Hu{em+78bU_#cG&sQRY#6#)X+% zb-fIuZh+;KET+KcA4a_K@!!Q&v^2^0-JSJiq;V@_dfs0HF=M|fEY8;4GRB9%+SZZ7GvHV(`0 zm1p^v{ncR=uHu|ovm=k&LE^k;q@GO3`PD^wdHuHTNf(siWz50cMu!BDLt(5rtEDF9 z&IL*~w?LTV1|iIzq*sV2=OYGGXXlEK+Ym((*03L*JY&7}%EPi7*zav}&a#zd|wnmVcrRH!ntXCcD%Gaf z_KFL< z3@Q3&gnK%N7^*gA>REWq*k7}cxyf$R@VaYuY-9|gPQc34X4Abb&)@(?M4UKruTwk` z*}vs&!oRQ|a}`JY;`OQb1M^3m8|i`6t(p7hdk5W>h-EzMmjWO!8prr^cfXR_)BWKt z2h_+d+xIJ{SO8=Hrsvbla$@8MkRt5)x_J5dxYIAW>Hc_4UHN%+QYr!DQ9qBKhECkT zz1L)7T%Z%(T!g9?BNk(AKlkWs=94;PvbzC3Ia^7}{_ExI zY~!c%^Y+RL@gLb#m3$;yO?&qr|Mcp!6_ISE(#SXlbV6f$H(OUZK`KY*qSr)&sl4B zm_-}817!@Jj}GaIM)F*@q$LywS#1gTf#zrNRom`&?m)z;xn+1;N23tN zGfu3O&#UU^PDtENAF|sZ_2b|HEQVT)TBF* z1v@Vef+8~yEQ*m7FkEyPMG}NL56KbxokG7L;GHo}7=OYkr?>Qu$E>=?2uOPvmhwlf zz)>`f%oWdEOq+M60<+T0F#F&Ib$IV0d`m8K+)hPt8iv18@=jRBZ-NXgo>VAGW#ngi zmzEJp=4!r06Apzr`2%&=rpSx8xiDqadz{P1Txyp_UuGcg+;zj5V<7XQZq5Og?bF~w zK&XXmq_CY3=v=@As-_e}<) z9FUBTVf+fQurBg}NIv?33K1{LIaZ3!s)8RsFgTc*72f@FO+s57s9@<}r6RH}&kC-= zY$LN=Mbc$NpqNq4tgOQvO>E$lbT_x+tdSC4UJ$W|`+!F=A_Y;nDhmU223gKnKiiB8 zKXi)3mgfuoC9ene5|u9M2JZ~_=ETiKn4Q?VnQ^Cg_VxEE846>TJH2dMQLWd6L-Eo> zJFdBLX-ReyVCQTx3b&pnei>L4aiV{5*=k)eI+O+xZ+!54xVE*Zux3g72O_zpbqp<~ zw6YkAA~YDHy5chDmg!7P;ds~>g{IyPRY9Yqs6%vYf)wLHpMNI5G6u#`X;oTX7vv(+ z8B}r-2`Y<>v}#Ew|GFd?+=5baaWq}g<2ugxDI&EK1H6aOg&0{)S=H!W*XRY{_@X42 zu!MFw&zC*>8wI7*;>+G;jeLzgrE!4L3#}^^8XYJ}CuRtg#`C8CIwmE}*Hb|X_ofvx zFxA;+mJ^hC{oWv*Pn4v*!cCF`+&H2KM3HiaQ(n?M^ggDT%}UwEi9?nGC!i1M9YLk> zzpb_$0&@mYrNh?z6FWH3G7cSNiZKK3(3H~tW`w54V%PzdrsQ!iWQ|Ae3Dl10m@9Dc zq@^TlLYc8neD9Fvzo$Kd$f|j>@X`%jW&1J3yC9d5EUUKK#h7T3@3X&36F~GXr1dXo z+y6NAyUVl4A+BgFB9oQ%?4y}cE`p(~5+^kin<4e-0M$a;W z?A7m0B(?_75AG3YE!07$&Sfb4o{^wXH zVLf|>ZpnDf^@l~`qa>t(vdU{P9Y4=y@EH=$#^B@M^xCQ0IS4FlZ@#5IOR3()GtyZE zOReB0GA-6B*V2~t62Vmj6P%6ZxIfk^!DX@&oK5zEuGKPuZ3+_{&BO&ZYpuZB=QAVG zYHv9feqR(r@2Jb~(&BnD1N!b#5icQB8VbpWAr}YNX?F({RA^MXU}{@TT?iO9T-#7% zM1pH1T13RzX~aBnwzx>*PB7p}Zczl%UW#kQEl@-{ToSOTFdP!FAvUU@O!b8Tv14`t z)+-h86=`5aBG!$SPE$W2o`h9H`1mZq8;j}@Tz(xEC<0KZIfVS4Qm8rJ!Ko;%B;R0( zWI-K2Br>0c)M4lEY8!^n406wB7QO1nb$&#gr~8FRkq9-ZRn3 zDRc70YsU%kd3g4%sE&2;dPRzX{RQIBnr?i5xh^ zHm=7`&;%V?OqU+1s=4Q<2tKmVZ!*nXVz-&9yxADKCI4YrXVky<-#uZ;j2|+XHIb=C zbyW(glb9K$GwvAcr#j)z)9aW3wx0M~N^V;!`oooYo9Tug5OBD4l{F3_>1nnT?e+G# zD`?K(&*=;S8!tUK9_!N%lTq2$bPu4rqt2fOzI2OZ2s*abTs)R5Si70P=6qP;XAtNT z%pfjQ4hoBRnY8D&$X4RIKf|+N+FWL|1Mr@SXca3@_+TUPD#p8D^O{}9k1ZGmWN&V~ zL%Rt&jV!Clvjw9@iOyLf)Pd6XIW{x(I1!E-pR_Lv0V$wv0>_xdpx9~?wC*f2f|iBt{I9aAWw9> zQ52U)4p+eddnO@2jA>=im^j&vyq>Q2XcF-#^H>8?+19VG5B z$P_iS;bE97BY#bDtd%Pt_sNJ{y3pK+oV3MuT5h>*8)&Pr3!pX@CT>fx_y1&3djV|Y zQ(MW(Hc9uT=C+LEO+%O@=JL2Yo}Y%Fl4DC3v3BWN9YZ?91a$b84me@@BPhq@V{&b5 zK81Kqk~}-p@X{o^E4x>A-AnTF@afXkm|S;1E|Bw32+JULjBpUwa{e@o4{O^b9Vepa zB|ecsnY6S75-JCl(Lao$asnR2xg=q&2-o%ZSHl8==-9*;2rRHBUmWJxvDS(;Xv|Xs*qYEp2E)Ze*>8T4`8` zlAWdMu%+NR{3g}7H0A#b468WLH(@eNyH5hK9_-VN9;Zd*D$X}dc)IC*+j*4jJ!AXu zL=-fp9%BUsCds;i&FX!df+Nj#fvfgoJ@7{Zd6R8z3q&hl0%A;bYK;zRC z_vXUY=ebz>_?JTFimQbL`CVN9AC<~;(UTcnV-ratDZCNO!c)CTgNR3lOL-XQhq8`I zsAPp9EEZ%kxvFWy7b-N;M5AM-@%8$k|Nh7pJ95|_t!b!-frv^-w9~OZjQO0;$$a=M zm%r2Uv+mw$cYI!-*EQ~@S)Vli+QS$=SGRrS`J5U>l27_{MGjS@N2(WDM;<^^noGH% zMVeM`Mo+aQP&Tvp96ujlxeg|wIx9?Qp3oD@e)(=Cf4iSvc{ANCz&*-_OgLq2l{DWh zVBK5Ae<9gfmGIYUnw|u^-Z~A_M%{L;G`21*x3@FM)2nXcJ03)$yRN~Pz!Zt5tS6S{ zSG*6Gr8xDvOC_DJrl26u{m?2o;6SH0g^udc$iBgyl`pp)l^I`E)y^Qz>9@L6ixJUZ zO&qCW%(0h(xPmWr_Fv*8+l3wfW0C{Ek>x1svBOG2BhYX;!h}R5kF0MW#g`#h#Ud5h zIF_1+->?zVi&5_(dlJD?7EfwI;d!0&fn-P@S}9TSef&Vml&bBcs^Q&KA}p)izpd3 z^0-@uRQaUcPm?U;gDF|Yasr47GilPhO{#c$olbjj2w{UVT?dfoCrNYFPDM7&n`WiVwO9|0{iq)2X*2I>oecyH3gjD7Ym&)ZX+8`NKm6J!N zJ0oE=UNC<%ks~?W^dLuSu$2T0&yHSpoIqPveP*028QZ{@XzTR7_T-&e50UC32!Wd? zJXMZy;=1{r&%lyMwsw~T(V%)`GB4$CMn+o`&qJ*L;0xTf%9JXfQNS&t5E?pW!ZWEo zi57~M)YSH^wG~B29iKA6@9Xv6xp_FPOKUyCs++sn#X)PrMh7+Jc<-%s)+SxI{9%qT zhq?MOriA6^<>w{m1ksE|hkwrc$F4%_54--!!rOVlE7yP(@6A;u{H$=)K8gN5%X%5Q zzB&;vvcCB>$C4UA;e-^JxX#_xjYp8(a!gRiKDyaWzGzJeiVk}h8USaq5>j}<8(BlF z)+z#X^ICQ}yUsBd!XcP`F|?8l2vaL_xFzf7SubHMV|{54t^k_ydsml{vSu!CZb9vX zvgV7mi{X`!q4Zsh?$}5TaFozevid(3-EvOXvc2eDcdn%KfP9I#&`{rNJ6HA>qb$>d zsgJJZxP?!);+xI)?|wBH8xn}fGN(u}Izy75?FR|B*$WS=h{dj8#<43kb4?T9@Me-DP^D%vK~*9 z%yfFxWi2OAy=}mqczC|;T0fA3VW=QZMttg~=R&1{7vnwPh6egn$swg*`^Q8RClVAti0(w0VJCM2XG$U;yeu> zMvFc6;LXHLZ%Co`L&jURp6+&+YymOru00zc&g!1i_pp9S?;L=BtDPF)LaK{)dWN&N zF$*dF_FAfri-rryKbDrlF%Bw)qIlVPZv`%Pl|0MlDKrXW$I4Z zMlkb1gbr_>Agz0K{YV{78e#-(qHeLQexZvZc|E!uXk6ybV+eocK$AF3{GkP1q<^oxRlYKec!E)}?i;$*`> zT+a8yOGX&~r%t4aLRZ4$TF2V)p-@ZTUU67+pH1uz3BA5@{H?Q7ztpXRyHOJ4H2MSX9i{#E3xzHUSV)@&#o92*u#9Gs=zUsf`>*;EgDHUgJAE?cg> zl5|0bR=e7<8@N~eno`P9Y2AU~ttja*zu&iNdRwNK3pK$=UO;ANo-_uWX={t0`{xZ;$QN8j4pd6u4t$-GmBxovHilGX2GKJEG3L(1dA^9BIc zHT5~UdGtvN^Y|gb16Af8TGl+_ux+T|V{i?pNMm7g9=$Wqy}X4Oxv+g|p6%7OeEC14 zpO@EXZyjT8P{o}T8l1CeCf7OH1m42q4>v6z@&BZ6|8L3Z^bG$^-~O*lSlgohFXDt# zBwtM1w+~>8MSGan4e*9_7yfn~m|71TZ{w#2A_yh_S9Tw#8Y-$77Lip|Ri;Wp5yr)f zBL|}={JzPjJ-;{C`&r~X6&N^@_3?TiS$I_x8ixl9=+djDpFLXPq-(S(q_I}N3`@EkacP2yz(rN^AoICtaR&VzA?PCaA z_W?qqeF|Z2@B{)x|LgV24mH!;UeEV;%g@_N&CmBj5A827ec&eN=iwxx{qu1lB_}7x zGuya!C4regg&so`T}}s{A6+3s`u^f3C&%0E`{U=^J-a~0@$>JxN0fcO)0{-X^L4&8 zn}-ExiohSJ6aj3*eW{ckO{vHA{8*EZqm2c4Ixspcx}ER)Lh_jf^r~CI(!?ImkBfz0 z%t^!ZNy$XZFFpPJ>X_iK5XMSCOySa_#e+Jfr%HIH!mBW)lLR7VP$`O+O8DiY2gonS z1d8XQO>(E?-s52AU}pH{jQRQ174L#H>SV#KI+CTEH9Bs1B;~Q;?uoUlWh%#IR_vXT z-IVf+t-ALxhx54*w)0xzn@1eqp(9BR5k zZ*5#o1C{GbMu!yY%$CQS&nLV-Br8V7XOyhCJ`6Z|4lK#V9C>5G+F+wGEb6=|>?H1< zEZDSJ-n_0;i50#0sAQ-(hUv935s{Unu%;xcG;!|CRE83x=Y=#XL;K3HW$HX|s(fje zTHVq3%$^s6(?*GI62zQdfX0Lh5%Xj{Ce+05b7{49X8{sir>p`rG7+nnvQ)m3bJurOk z%8|4EVFvvGFobxO#orv#))znV0eQPrYMUp}9MDQ>)-)SxyY>#OPI3XbucCg5wNH|L zPyIHXoC(-s2Q2qwr;PiNv(>M-FWSd268$5XZKOZrh2C4QLN;Qe(N3x4_PAEnEkpDi zZ(9KkRhFMmIN4+?< zS;3r`(IXilrQ4g5z)fd|TczIhqPQoAp#}sXCQf^fvlIi;1s1RuA-b8i*kn5sZI2(j zAJT;dL`-w%)f{jY03rP3Fp{g90;LAS_0ge(&K+G3yec(WJaYm=Jo{~$ZrjMLo(JbZ zy4Vew0;_?%N@j8yveo>atjc4~*|<>jj5B&+o6-v$NThHVtiZ2Y#R&Nwj^r0OZkaZn z{E6$IUB62V!L28Th!Z6yAHa1pY$F(s1W_Ys-ega?u}DMBe!!IeF!b6n}kg9s)178dri7o4xa6%vd+c(9^P@ZO~WoF!sNu z#!bvc7D7EFwDEG>e&@FkLS2l|rY8341I_uR!AA$od~))(JSSZfMmYV) z7{el_W}+h}Wmd0!%Zb`ZgJTEIqQ0RRT17tqZ z+ptIuGnXTDi=qhuSsd-w;Y-gm=Tct{h@`Xd#e{25Cw2jBiB(!w4>jB z40^*!z*LIvK0lIKltXicY*=ZANh0D6Du%t~)41BN(z6(wwh4%qr4K$fG<4l6V>U#k zw(x-BA18M z^eILvMBv;`zdN*|7IG^8({O(xW3Q&8h#jcz^wHa+8?X86P0@=er73fn<6Uaz9D@lp z2o^l!;z<#)Co)s;Yz0zLDD-*F)qSG&TGLhUJBg|7n+! z^c3STV^$WE2%WN0Lu6gEx(_B!S$ev0q%oC8dkVkUZKOT;4^+S3G~=-7rls^3S<@pP z@SafHGXs`XWR%nPbkD5QRe((vyj95U1AuMtEyut_NVm^c(rg6*cTx7dA%Uk}uYjh~ zT=mJ-1eA3z;iCcZxR`Co?U&MMVFivcSkkkYF=Xe#$(Mh<-6?iWFu!7uO4{~tnj`|; zTWVY3`byAL^QgAJ-R#Kb(3#tZa&d$CwVnRz+`d zJ6pUeiXDus?zpFmjBX>6jlJ8qf@W0@Sav*$t2&V4aeYMuq$&A~ zp35D>UZWA^Br$C>((ctJUPp&#s{?gEcxV-w-FCEaRr)o-XlI>G70m512$`<7{(QZM z&L^C0r1bOvwB11u;T7-8_}}59>eWi0riKIt41E|8VB)NmF_Ne4L!-qAU>f2s)}%Fz z0!td4AF%%1_)jJ46lwnUDps47nw9`ZZ@SU#Cxuu)`ARUNC3d;{#cVw#B+TRZ zyr!*>0C{o!)J!~>pdl@l0K8=0B&r$Ze*1v{1DSC_6KqD$o1{f1!H#{9FiBakk52Y^LTlTw9v&;EeQYIouUDyCZz~K^Q2d&0C~`J}fSS1L#YlIa@_5X9^;7t#W;x- ztTmQcXs~^7PKKgC;!85}+h=SR=1G9t)IyHnaNPYMzQ(tQMcy%56F5WBH^%R~a9zu$ z`R&8l=&DdMQZ!9v=bQ@_oVAgQ)KUwFsJI7>0HAKg|M6K$cfQX!?bqkxwC*(g>dv2M z17)V|iaM^%y)elJ5{B)@u2S?k6_I~8p;_w@ww4bz0mUSKy3wl>p3fqe@r<;hmrYCW z#4h4kDa6l=DcahXe)}8Ro|Rp%&xq)nVYjKyShu0%!DeLMmO#P+b@pX4(E00&wj)rD zErieRzBjOSY+-t~73r&;DF(NrA7gr}cjkbSIoS~dR={f!G7@?Agp>@1G)@jEo4>aSY{36}r!!1d}@5+}?e zC-3!4#sjZ6zhr$0MLx2#>Zp7Z}K6;m^_8 zAai!%Q+np$bN=197!v|SglVdNkJwq@07fG&MSxPrA%_Ep+=v)u<}klL70i3=oLO%sS~)zjeZ;m_h0C96(urc-3a| znvC}$joCr)){LMCIe--0h0LU36J_+joeHwL$VL>|Zs*fG)1Bt4=Eo20U|D$+r8UA{ zB^{Lwn~YmZs;GD@0v^ZeNmCS5Y{|Pl$u%#wgEGpU6IuA|gJX0wE}n$)W4n+plkKxN z`L;BSdN!9P*{+XV&BWQ z)7e@t?c;~rZXFK|%*2_+&Jhl>_CFG>%{>iv0J&>?K~G2TkWoui>kos>MTGA!Hr^rV~oeaUyR_{d%&S z+3RE#*jjX))sc_gto`A{7D=`t@RYp}gWPk&lT@$BOl0x@?Cu9=BN!-&agV~%eljsR zytC>cg0vlCa@I`sA4cJivwd>3^CqK!E-{%Cg&dEmRop-ePVh_$UQ&u6sBdbA`;9** z$%|1*)K5=83v-dHdPUB)@#65KJDWNF3V)s4d$NqWu2bU7-284D6F|5_6T+IzgXykz zd!Pb{t$P`QZwKZP4 zbKdS*{>wSh-X|7|U#m-=aJR0u>K5=!JRhfqvDtT8)f!isdT8bFb_V3Oc+>&a<69M9 z*Spgt6z-wx)6o1bx?k_;@LaoA>` z$ul%tjt7E=4{=#A3E5iCP9yJzoHqaP{H>r%kr>5Y=Z6=duMQVm|wfzt5tOWt~^SxYuz< z-y{r|`eysHtJoH6WUuSirOgGxK>345xT2)mtrjDF4J&{I7A@>MA)J)Tjt5lDD0W(!NPY(MkqbUf@MD2kJ%lQk)Swt~WQk|Flw2fih+1PZ~!U z2`xgJd|vlcjVk<^g!Ev8hII3L=$#a-X`B2|@W-nOP8)+7F_Kwr6585nLV~eg7P!TF zzJ~EvAA3QL8$Ro-CqI@Z_1Z*%)~4HTj9kp}Zk_Yj8R`I+_@3PN(o6e#j*N?^u2og7 zs1{NImIj((VOv^m|Bg3)NvdwiIZ?yg2OJqX4 zze9L}zM`KHKO}JyJI73+Xy)Xf^q1y+=YfbNtq52q>8toOmYeb~B4O51&gIYnAtX2KllYDEcpUVlX0k^>eIt`xg-6CG0^$T0PNb zsKy4sjiHP~|0*MEdd5+iuYjcgbR*UG_aSCM@Q;2Dv1401??Y*dmvOvBTnR5F$Klxw zsI$+Zj#}EKv#V4T%J)Q@$3B*bSM-t2*EBz|Cc!`UJ}IZoRHVlypE>$3U`8KE;G1cK z&Do=Z5F9jNR_eA=n#y!o@B%`r4JY9CFL~bTPm$|8f?M;{x64{X-dy#S+p{RL1ZN|wFf3iG#fe6O#&Hl&r`I1_y(Nkkvmm7uJ;xveIj4NTDOFiKe_{rfd6g} zrVw9FFGHk*ozgO>D5VM0;u-{0-0rL$CX?5kkB?45h}injYoHQLR$c3f)k`kMGpv^d zyc!%TkzxOdfH4Ql5|+)USN?nabe&@gWH8xpssED)u)SI z&}9d3SN#=~XFGg~#s6%hB^(febxas3 zpq}@G?y-Z>fko_S=zOaNwrz%$?tIlzRK=t(I7>AVsdTU*mTDSpg)&CI^lTQoL(5rx z{?*V)avZP0L3!!O`0M8S@zy~;;*%Ptt^9GlK)pW6l+t!YRyr0x*^;?1E0ydL+HJgch8I28%|!mVtCd(@}GuXuP+rxdu&xyVrt+ zD3`=g=K5r0e-mzpE*6&f6>Bs0+aEfsb51o5SkHLAyJrArFW_`s2*2TQ55^Pa0G3%N zOrch9%!SQnO)xX_4cvndPu9|ZC5%)CMbLGQ?r?SeD20v5Yw*8SI$FHR&L4(^x03 zKe0^92mgbL&+xwlm9sFj{x=o>KUwM||4+py(?~4ErpL&oDw$XXr`z2Edj|Hz?Cp)* ztNZ$argYN(OCcC8VH~t9F7b{e?jFbDLp-*kgbnGgE`&6G>LNwPBQ~jUq3xQt{FbBPbDdI zJ;*IN-*^2s3K9pr5fRv8hMTEA?r#GV_;}xwWB#)(V??(bMx-s*4=r@ZZJuv6Jzw{H zKc7#!KA$I7AHSLF-`_cW+pAY0_}ku{J*n)n70nAMTHBW-jh*&1C-@{D``o{}|M&gT zcMIPahct3Ob58*pJ{Sx_WV_#aYiaMRH4xdAH4tH7&c%Dvl2XgW_<-k5cbBI- zx*Kq(*T)3(BoPFg-f6eLa*HirkLL^qauFZjX7|_A(M8LaKw)O(4m2ZD?VGu`sZ{x! zDJ7=RKx*Tj?O5vK!%XRbhYsd|huas;72Z15$F836ko1Rd&u&pTy0T99Fh!H0bStHF5*0n=Fl z)k}yOV-~+cJHaoCLvbMw^yv>pM@mC`486M!7$8xpiTY$l`%Fma2CHbJxRP6t0*RY?shn&{cs2JRv*)GQXSB>QFk}U=a~W49_ZGyYp?+@iE;E}xIwp#)t1mnKw@L>x zO6JQqBN{k6`6&N@?Ob-RTcQouen`+9Rsuag;F3&-iCErV7=#?xP>ESDn@x>_s7NOS zrD>Be0<-|m3V==NAiRERC@Ca9d~_ms8B1M4@JBE*m3+FE7pkkp4qVP?|8;W!dWXqC zhZcD*b4Na1*mU9qz8C8u98XXM)a3?8+kz9QOJjBQP*SfwQDJsp{48$K(#PoYt@{FdjH$Oob zF|BBsKDSOfwDFr9wF)f-2+rMZM#qj9Z5Qm)#Hor;k61FjZ#s2h21cDMOwFuhtQhi? zDdq=-q%=y{yu2u7E~{rabqAFW$MiH09`+L*80-xO%;-(=(@__2FWfLml*1lZ`dk)H z*42h>6J#fiX_(img=Nj!k9N`6&IlYUqc=;wYhLAEY%VyWe_4cU_j~Hc-sF-e6lkKA zPd?t@c>?VQeQlW9jJ1JI0oRe9 zB6zuDFQN01gvtT2OGH>}$ls6v(12vo2JQS*)NxQnI6}5Vqj+WIzAFT%tA9|5V-h1X zwCz!ojjlRXr?+3MQlontxsi&(F^Xp(*8XnS_GQ~H!g7>JY-jEp?DvhS+sruH$SKFx zDpWwhe4y5G$_x=zd#);CznuXa%YvCamBD5yV+^+YMwx@CJ^-cT*NJiC}FQQ zbcIH6E4b#6wvN%lkib1Ie@(ew2IuC%C2jq?#FkM&)rcRqOP1Wpx}If`nXe5K{*qP{ zwn)X7YjJ!c)D3@H3mIiOP*=(9 zEBr1l40EfWj*5)4=wEDH`^7Eb_4dL^;(lJgY2eJ=NgK(1RGRpC=6jjt3NrH`_uCTd zV+%0qrpWxvs1ol6T%w&IC3h#Jer#-b=L$(OLuM-LHQ1)Xnj|PozcbJ6`^Oqsh@Cf9 zn#;ma90%V*{~IM4a+IRniGmWOQ7eS$CF*7cU_1PL`%SLMG(3a#?o?t}nuX7Ti0>e4RHL!I0Y=(1P(^2dTDw{C82s+vj!jD5k!7A{Ifko-?3bU^>geFua5;9 zDSv#3(RUa0pf8kiTRKM@?cf1y6NUojNkjXM$Y2l`?M@rf&?;quIvdP^wUTT+@unuR z@>t~CBcpd*0s-zFjDVK3(WmLmb@38UOgq%ZBe+Oq2-5 zUgTUVJ_kLPZ0oeGWf8A`MXN^qz4o^#OAXL=>nw7_NNZ8pdg5rWDiTiFqQov)fC)Ho z{6XSl>yDtR81>&wCxQl5%PgXYuH`nMI=KyT5JoOpQqUlXIuyu}b#0TDX>Ky~(%NAR znci9-^-TYOkK`+&ir#Y1dsM4JSXTpn$W-2)oF))e^@%QGBhhGSU`rqsoN+koj;KiD z%-XoUI38?uvAW`wb2OY2o=|&~Hsxu_b{kQ^Rm6JTo)&DiKZ(pnd-)K9*u*(HdF;RE zFbUtQ_UP%w5Ae(oE##vIvk}he`!Vyf@i~wzQ0)rFUZ9YObctP(v=zid3BtMD#i&ng zSrT)8vZw}+X))VQb_FD07-QSW^3XXT6co!9fPhR1M?(J;)7GB!G9I(^7NTS0v;pKI zU!kp~z?L12)Z>e=6MsAqd(`teS!Z}v5(&#B-ad3C9JY&0DpmZ{|6(*{3x^96u9Dvn=q`DwpEjJQRXaFm1B{gGw!okYFH zsJ)EAtnP~_#!RaRGP@rE@kne4C(fL$xg7-$z2-?vsNfbNf1WZ{vJj;Tns-R!5>l_i zxaxcAd9dyxEtKP)$9zmp*%)Z!=XNAzqbx)M7AN z)JoC-CJ4jR%;BRu99;vDvy4D`RP$oSCEye1uz(3my7RT~M}W^sbZX-aWmPRXo8gjQ z7TQ&d>QopD7vDl30t5_Q@dwh5FFM&AAr;OYvqU_WuOW@LI}W4|(U}kpbQDHVxoE7J z+!f@YNE5VmS5U-?D5(tBK%LX2-}06T(tG{H<;)IjLdsW>Nr%i?>D>HQa(rky(O0ts zD+o%nB4EGwG-GF~=7gpM{+5MR9FI+yS|jy}WA{spZ?jyNSk2p_-v*&X#B(0lhaiU$ zaVvyWn6BZ#61?Sry4^#*fnZzGs$)rb3j@ntMhGFpp=og~&jb{v+^o+8TcHidf3 z6m~KLQ?iO4*!3?I+69S|xU$CSA6?s)yVyXQ^mSWo_>Fu9;CwV(9}qU~^5drd=960h zNY-xT;Ab&Z9m{eA8(uqS=^Tn(kiUQQTQ?MN-u^KyVx5B+$Hs^(9YB~S3gC$>!JD;_ zGP{1B5#Y+dq6c^4;b2AWIORu>;p?tVEWc-N?)U~&4@y&7hb}Y3b(~1Z^ znJKxzf&@0B#aR_)Y8=qG=tOavN{3eadDK@WN#-B48DRj|k*5mX`?km|h3T|z}S z^nLVTT+hl>5NCDBqA;^~EhO<-1Pmk2q;LN1zJ?wO*`LxGsl15u;hpl7hiiTn0D|*U z<{HS-ib=tvX3UR6i95!)6-v;Q$6(bKq(zU>@q3=+?})IqWUjqqQ~A!7XF?R@@89hP zp4P3b04h32vP9P1k%)SoAh1#I8SkEyVKMpN?ERQq144^FDlhvNjmuWjGlNJ^Y%h&# zu-OPPhDo-FJ@9msikHcHv`z>nb;|yof`FkLmX$L(Ne*U(x|aXYQ22SmAAcJUg&&vb zs{zUmuuEsEr->_jPz3V5&M4nOU)UVEqNu9*i-TId3N_=Hp7IJCApWhgqN?UkD>?FC zo4nbA<|J+e1P``Q%k>n00=TH9dD{p)&Sp)^Tr{b0cV-%nXuILU)Pcss2C^f9t5xVz zFCS`r@q)h~Q^K6B>&wCNA8F8)OF|}A@fla1`zS^iL}G{0nN&b4RY3XZT` z*91O`Gf8`5sZGS-jH@pbPj~3@#OEqJfFOrEyB(b-q>-Uq8VO4eeOQs=Wg$2M)2o;O z?J!aj4XSaO$$~#Sa^WQhZ(L4}!kc&J^#Y~Ux4V7NMgNylE4-mM7gZE28}zm zLSuf>C*@rNd3gOL%8N5zotWC?EE-!^(3jX(1=Q&w2!3db0>F5KK zp69is;nPkq@mzN;WdwltoJrQ^*z`z)o-`J^Bl@K{7byO_mi3SW(n+k8!J1R2O`AYi zv^tH5mCicF5na-OtT%dfpd4ja+Pb&SUSskqCeU%9bP0n6-G9ePEz%HVh#};So5JV{ zZ>q*a9%?gNHyRBLiKs@8?{-X{fzW-(d(g$;V0ooh_-J}UEfpl-TlV*}9r~;$$ zw>37Z=wa%+$0DU6T^=qVQEFJ3P7Aomud7@DgaRoN8 zFJ&sxbTc_|`UuSvC&#b45H8oQGK7rK%7QqC60iDp)D@qL3ub%_5x1v)C;Bn~YpM=o z{vEIGW+0K4HOS|=bGdVdpyHJF6IuV9n>UOqG+jk-v(5j^N+{{9PR%m-HiLx@y95l_ zmnwn{;PvgHE$$^LBl!Dj0a}cI<`oW5RqWPYhH3Sm1=^VPO#=ta(VXjHErJ^iUnxh{ zleulBASI92=MBI$btg2utFg~{+^Tu)%b6~cb3gRDZzv#lrW0F=dDB+k8v&o7pZHn) z**8@-P!vKR!0efR;fX^@1af-`r@D)^rlN%sNg&HsQ9mg1h4=EPu8Ju6WBwlN8V_y; zy_@vRy2$pM(YYihy@>?dt)D-Xr~R9LFkRbLt_eX5=R7V|UVtEykVc((NXlpvK=8bY z8NZrfvA@usok&c!ko$S7+!8-(C?#y1!fXgS zAGL&K(|eVQ%UM6a7`;T}LtZ8;lok8_I+;+!+ZNAyAg*y%zv!B0O1MRwa(_!d`*0Hy z0yr!+QE>}@#%~#wRNcoOkhe8hjMkWbr({A^#v9-qEqH#UaE)`BUe{oDpz{)<%P8lVbRW0{n zt+|F)EG^nST$LqFGRiM2k#fLBp<~#QSW-P9Vt;&x&*^|PYS#OJl(#pOYb|2GrDdLxgR-ZmXXmMt>L?@L2@C0sf&?9mTz3l(Jn79XXXmY(Bp5pZ)*f(jw+oPQUDEIuR>*nt6o0CJz?2S3&ztcYuE zKKXQz^?5S;nrtXp1=VsX3ck$qvj#cqwA;Pb2guFM_tN_(rKP7Q$TbP=I&U@ut}70H z>+5l(W#>!wW#zY^3|tJiBzLD9@FEgTpV?{e=jTIt<>!7O#x}>hs2%_3j*Qc~uN98J z9Inw(f0(c9>-nk$yyo>b*XrdKqTa)e#;f)HbEq?3_UEIe=lh4x=Y8eoXU*&5s$_@T z=SzsZ{ifUFXYcLUENOcZy{z!MG6MQm#Z|*|6^ifY`0e@Zt%dK?UX7p-)Y~x7iM4vZ z0uF?LeZ!CA%EUi*3pnt33pi21zGz{E3_5E^CQaqz`{`-{JqTCtOTD1WeDx_s$;G z>B0vA$h>K`pxIgv8ehS?`~JnM5ASF6UPI~$>WyIN?R)J#3^MNK##- zf88?_5fJXO6!JXt%dwbzvIqM2?N>Xi=?@~qEU*AqRBlO2*2 zf|KOt+%N@JhYCuGfjqyw7^e%gf2ZH`c=2j;SpZLdV3=c7GniF}uWiBnMXasjhPq@Hg01}^6!n9})Kjzzrilb#!%+0l)Gf=s1mN?| zUVa7EY?;(lWd0^wDY;>v3^3P880Kof)}l|mwg=%AA8m^Cl?S4M2^77|)gGfb0Ktoq z5J}GyVSFdFjE|E;i#rK|=-p-+CQCHnZnqz3Xp-kl0Z5!(z%iy}bMw8! zvFc`Ig83P+S%AKXK|4tFNH$W*N0Mm=wWdmr4B z0~EeqU)!8RBcXOnE?sA6YJyBeL=)(ND46qY_+LKhiuL?Z0!rsa8bPK-Gw7xxH2G-4 zUV3o@EW+#JXG0PNTk}-VsNA<}%X^OjPf5dM=6$1*Zq+~6JW_<0hL4{d7WJ(bR|VS8 zY?s%OFY3lb>vODsYU)E@D4E!q{n^G|_%!iIi9g(cTaC=M-w{X(Fwh9o)rz(6X(A|s z9Yn|2rsN8kx6s~fW>O{-cbIAjJHdjWqL=aGzNz`!Z?Yuqc*Zf~Y6-E*tM0Fm%+>#r z$l;LAGYf%^FU0hS-=Y6Zr zfXB}a^v&cKp@s$;;|#R%K+szfS*5V+#;pI+p8AWJaYNt@*onaVqflbk*K}&iJwA`$Z*4f)c3{Xin7drk>`>mE zOJK#{p16BQ23Bd(nYO~oi|?g;5jXB%R`u1eh+!3LF3apXg$ldatD`NSmY6k4YUZn% z?X7s(6CV zNaQgj`we(A>QJQ6?LOM5)@+QjOGtn+qtJcxwQ6#HRCl08&U46IObZfm>wiGg@r9-` zw`vmxTbrj++k?T<215B1%xE=7nCE}`T^FVtC90V<7gG6g;fnusAa{X1*scFz6N25^ zTmU+=2wC8Qg?D0CACK*`axjqVR1LO1g%)t}RVpO9L)&0yl9AK%x2~+)65~Q+kg1A! z*E9>pYRYH(qEWS)9XlrBax(gZJmGO{Z_mTUYX6C&Ekwf7fFi)BcN6`0WU)}2E;J#( z(%U}Z1qpLOiPyy4V#NjmEh4oT(Xd!u=PgNeTm5aQrb`{Pn8Nux_*2a2FQoCK2ew%X zg+8J@<2{9ZJ|@+p9o9V)^kXEyM&ScohE{7rPifY_N5q-2fX~=|hD|~kk#z9%GY8&6 zm&pA7)~iJjDMBDh1Ecwp`#d%iKDYHEc<$_iov=RJQ)Jt zJ(Z6z%*ON3HF&C$!6t=+xe!MX!_C-A%f^L+_^?#J0T{o>RuNS~VOxq~ZKAWS6%Iy5 zS|ORS|I1SXG1OF1!_2YnK-AYBY^KJEg7^&uqPXD7x~e$Q^Uh>+u1V1N4> zu1;a94}>xN_!K6$Acl!E0*{ag`RR^1E*EL;!p^OMOqq@ zP7aw3+oZjZ71Bi%NVIHhslR6oN^u%hnlHu}g@ap_MS0Yjg`#Yff7Y@qpTtHajsF}r zubF=UCkBuewYF9+(MxV(M$TYtIIpD=Np7AO&|?1%vCNM%3>iNtbL3dn!cr|Dvr(aUX0F&LE#}4o%W0-n- z(0}dPT)xh(VVI)LIFLjj01V=Xmtir%LFB z8EDC4-pzl5ZgfJI@#SV_bB3tvVYgErKF0xuLnoPp`RFO2r!UTeaV-VmKCa2RT)W;j zVzgW6(5785B?6?pah9^+VLiIOHzzPcR6oJBHxiVJ+DQ05dn)JmL)jF^ zxqi3ui;EQUL#fu9B_*v9X`HVqXo`Nj*o1aG(U;_ruyo|eHOPY7(GUhp$%xyf4z!Sp zdtA!B#ZgeAlDmC`ivFUAc;rWuZOYUJk;TCtMMeoGRigyfz2x4|SrB^2vsIxWOxQ1E zTzyzlZdK0pvQArPKin;B<$%D*olpetO+E+%qzC}_+7kA`+NK$@yFh0RTNn$eOzhzP zHqa0Tn&CKQ(6K~gNC|P^{+VJR|2LGIx1?IPeUV-UqSwV`nJ+KWt*Vuom}MK)~Nxc}TF9n@6l^hLNINbRBjV8^+w#fp_eL z@Qm5|!48ypgezoQoIQ?w3iDTo$(~~KRXcSl>hm<3(@rBqBNMZPymKWK#|wIwV^k*c zo6w7c)soK~GGNg=;Fv6*`Z?Fr(^Yv*AB|)w1)7+8mT}ag)J7nYq(_NBYHW`+FO!XI zgzjY2&0FjZbPQKny@WQe+3Sy2PTon$<&3oCs@WWCQHn&Bx-F8cUSSDakdE}0ZmD@D zj`SHPhG*0hz%?hui{eXVnxKCxI1It1a@AMEkp+Gv6sG3q!kxMUy7D4tnBw)D!e8sJ z+VMRh$L#uXo%mpWr;N}I9)XH|sZ6GsPRvTgF1DPo@b#1}y8&2PFq{!Yn-1RIfy>qY2a``?vd52mH1hke^|(Ze*jL~V zmQW2zEZm)Bd+RUGT;POi5`z>To!Biv%};N0%-~n9ZG#4uI2y#83c@`pM~wb{O|siS ze8f^OhjdpR51qUDsu}G897oxJ)DP-Ig<-a=1l3B12;-5+^gGb`>$7n*;D5|6PcM_o zNDmRSsC<-WMNV#dB2HpsPxqEh8EGfxl1;;eCP!&omN9v<^?3p}+G9@lKYK=Q^Elz> z;_R7z~KEw3<9@p&6vCCz)UKXdee*s28`n{nced?I4M1z5KbTw8Rs7*?0Chj}oD zWsNuhF@`itp7!hZv;`J{DrEeEwMnHBLZpl}Nuxo(vDYX8Y1S|QlD1(riNd4iSYbJs zrn@pY=pCRA$OySplk*3Hv2-#nTtF`cJNYimI5F>mjuq`>FazkNzStdtotb2n3d$R; zPqs;e>hb@lIv!?f2)FK1K>IUyi@mUDvBbm5GDav6T z>741b$NG1v2m6FUh6cYLFle$+{d}Y3DS|^#ZPIQ|NpiAHg;~_&Nus@fxCdBdiS?m! zR6baFzZL)Ow-r&hyvHUt2VcO`?L60?d*7bWq2*E`jF=8*uQ8Ur$P!W#$-nO=rizY# zrn7y5jYpI%FeIVDp`Wi#MM0DeTnHtXRwgDhp9Bvb+nv)ygiS@;rxOhUTb;@04OV}u z^s_>YtD@Gzk_d2p$NVEJ{vo5QwE*NQm_JNxQ?D4eAYyjzj7*5u)?gIB-T0= zOWovG;A9Zj^*D&$${byjT7P$D69kQ&Qmuo9MdIFeAh?4zInyT`Kf;*rU@eP z)H7mPgK_nYAk*h^ie0=_9_nIgk9AdCX7QIaN_~T;_(X#@EhXeVLkijNsg-hdo0b72 zQw>~_%5QOV?VaOBMF^8D`u{NYP0^7CUAsvp$;8QIV%y2Ywr$(CZQHhO+qP}n#_4aJ ztMi}#;=8N0`hBabYu9G)dL9{(gCVV7hYIj0Ty8PWjN7$%(I#ISWTL@hgGS|ov1YLN z(^ab$WD9_FdsGn&X{83=ks#S)Kp z*8`KO$ePs%HDa~0xui}ly&US*IbjOrIHK$D$CHlDSmyLqJrqtdqVF*t);BTETLui@ z*f>15C=|YA&rpv_zj!@oSkkPV!u4a{a8GPRV%v&{|8wH?ODQYdK(v6zrAF1T7#c3y zu2dKDdeK&EbC%~fZGuE%p1U#!;kp$an5rNRY^E@cSvf{y2_1)b>YuX19~#aw8zj+m z(LqE#E&4`Oxz1$I&RBl)^W_Z$tW{Z8KIKG0BW-q%6M`n3B z@+PUPaR{KClXGcHMLIY&W+9q{E?e~*DT6yHcjirT(b+G4#8HPkra zgXrgmJame3%Z1pgZtTU7;3X4tl=)1dbIQ6djr|&itiy0GQ}lLPV@J~$>3C@M@s6$| zTc+7a2#N!DB1Wu%IU&K>@B%4Q(_kpt5`4_5h~Ft{gt|DEXJzs`Y8UzPB*ni`Y*=gl zFcx@1&2_?>q7f2ZZB0#(esfCthcU7}NER5r!S)Fjd*c(FjP4j{e=ql3R z{bs`?H5OC9S>?z$dp*FIo*m%-ThZ;mWh-N5rvD#Bx9G#xxc>`nAUw63)vN1U zeo141+v)3qdHXx^3K%95cE5BwVma$R)-KY1NmB%O>P~U<@6Rmv*fA0-}irgX5 z9p55B;16t~`Ds=?KQK75>$2I=>F$Jf`{nlWor0PwgkarU_yZNZ)BW>)PiP?dnv-L_ z0~lU?9OJFH?j?W8&1WV7gPd@-c^bKVPI&y5~6XS#V zho>dd4yy)D!Or`~`-kOS&20PQll>cZ=YZ$m=M~Nh*sD~7D>^3gugKLM@(>HQ8cV5QH>J(X-bl}l+w1V|J1&!zOh-tcr+u+0)afT;!-qz?RaPSXN zbg^$EK9a6i-(-7uCR32f1Lzcrf6!Srw-cKrHC2b5Vj?wWIgGGO&|>dc3l)YFG&9IV z;MZ#vrn@4^hvQ*f#@&14Q=~+0pVN(4t7eSek`1}dlnu9*jIsitX2Kb`eh$X!t?Mf- zfOlUe32*D`tvd|0R=etPOwi(<+(c`*YgAGAPK32Ev>EQazHeS$vrVZ%-w1D{T*Dmb z`vzOcQUEx)4{qq&^LIERp<%Ze-_s^<|CYsUTb-GalvM`pdt0^p0+RYXkAX~5S)zOU z&~3I=&1hhL>uR~qTK>b?haq%L4Z-paDegv9y9s`&BXhWUxY4_2<(@o2`x{#I`cinH zmOOL&=3>vh`l|h4x>H#tS3WO1@Dw=H)YQbe&tIw*-ipG&n=M5NS;MGaSKD_zK6*-! zynNp^8p;rfXMl4rHp)v0My%F0&n^dxlS#DhbKSz){&2!=ZgD&J>C zFI@53qZg9m^Ldpr)rI`jwZtzadnwJ$c*i^Cu}Nv85n(1PX?01IrcG5+B!kll9DV72 z0te2qIQd>@95620!1~wNz1tYyaYCH*)4*QEnVc7O$KJ9=2G|5`mdbAQ4|D0X&xixv z=wZu{N3)v}cZAw90v{&A2W_NC2Fi>G`rA&{YPV?v;ts!mBl$`x3Nyc7&m6| zJAQT)IR7ZtXl)U@{F)|Ae%;+ve8*kp$1rfJnl* zQy}PXzetQMcI0PIUp;y4!Vvn}Dee4bBlgz~2m6JGV^8rYhMs2un5FJH>lJ?O89i3XFGGqngFcmk`*<(cW2r?y@3(-coC<%8SyzzKFh zmM8brYzzvPePEO@5!)(RPQwb^<wVt z?}DQuHA(mp7s({5Vh*v0NF?@e)?rtnOQ@l6aTh`@-ucG9`_sH4fq+_VbR+6h^^&;GpzPVVdvQ-sAXC z{av~=Xy5AM0e)H#3^{mm5`( zgUpzgnepO_ArQN25g4x!-+sAl58Nyj#zZu<4oovsCiN%qm29jv1;XxVxA>HR8_xxt zWdVjzHhyXG+=Q1roLPMUq~8DJRI%g4PLB&2EswYg57*XLOt@xnp-O!92(;iU7Bd(r z#tcNWK|zwOADYQz7fe8FEeWr~75_8~c#d%ZBHxh-&mAe>6n_SMtTa!0_eRm(A|zq- zSeKso_uDBwBq^AfSUH{)1y8KWIQUFsE@?$(Exde!)mZ>*v8AnKg>JkuO>#U$F$tfY zKxPvr-9H3XbOL?x`2?j1BC0vsKM4BOm-g{qRC8BOYufo{%Kd4FVSN0hPidi4=+zTLQeA?z5F!S+w9FOB202IB^_ zS)iwBfpS?7b%55vW%Z(PUB1)XCDCsBBE7fe>5*i8X5>t417gunNQzJ^#EO$Cr!a~{ z-zO|Q9~q-vZ*HZVgC8h8N)%CnclB#rpiI!@=<|=W5Z&Vv^l+1= zA##-x$8Fo=O!?7#W=QpJGv={&TR5wWXPYU0=sx7Hs^v8Vw~Tb22}@P2L9P=|LkP}d zqyuFsQdFGz%d#IuMwYZmk)~<=(UhF{^9ExtN!uppgi7EE)$YjB=KP4x{**i8S%XSN z5O(k`h+o^wJ?sefjtP-aC~)LBA1E}oDx*r9Drzl8XLM;3X6k{06dyAoQbpX>GkVK_ z15YKKjg#SV%cW~C{aux?#lH|Q`XpN96F~Xu>qT}ot)yogd&oob3(@Ppsb^9N7D2W9 zYguywFhRZ|Soc2YILWb9LWb}%kmsOMq}XaRrk0(@qf(?Q1o@N*^s4#<`nR8J2;*_w zu<{#tkSfn!rPZQ2yB=P+tOF2%u2V1gwX`YCi3L4`kq8u?C^trgXx0s)5$Y5j)51#r zU_pvO{e|FqHG`uTed%a+y*$RRUk15$FevGzqvtuW8I#9MCzG#Rs4B(}?GaPZ zZ7EX+Fod;nO3XXZ8GaP&a;8Lol-G(>9`nqUNO^$STeUg)&c-xrzmxxM>x%&baYMVa z$@eB*PSK)v`im8!!I!Q_G6nfXvJGzGm3aFh6w~+$KL$58h5#`jj0}r*N-w$f3XMK{or< zSewgQNHY9lckdFm_o7t3uckkxNK->JmJ!`Z6PrhOlf!WdZc@*+(IPoS9)Xx*vk2MW zNo{f0`@-^dt)mRLe%jVYn=nyskM%@PJ0O}EilQkGjyvyKvuOgXIAtM*S` z%NQiaRG}eT--+os3%e-6V`77gHJwWd{pFyc2!I?)Sccko)SqEOprM6xCE3I zuaQPH_eidY#(8R`c5%<+=x@a_YORU0oa=uij!oT^s`O>pc8?P+aAE2un8SNjXE+vzB4X4 zTJ3`U0yyB_4n1}KKB1^!N5Kerca4G|{Q?3ee_~*EocqmAh z7oH3GjC!0kHU07H8}yBmZBYmn0lAtH$Evd(iqXq@AK=htUNVG>)g927JMz(^zk0ZV z6uwa9)i*3!VY-L3$yru#aM=|kc6^bOKQtdrkyN;#h2koa( z%pP4}tOKE?86}Nb{fPJ&PR(wXr*Q(+LZV`bb8hNaQ4WdqHI-96+wIA~dCG!i8CPyA zyFqEqq+3M$_DEB-*y6d3$f(Z4ZPjGy&K_OA0sGvkX~V5cp-W1jvY8|8j!q(1Bu8x@ z=3CBJ_K+OMWCy-Rxts`o`HaE3bc+!iTz*93BYq!bQ7bVo%TyDL)BkAw+Z@Ay+Uc16vX0md|j^-zD^;7lJr{jfLtt?|R` zlwnV~alvoBC~jRy!Civ<73m73GHK&T;}@%yRb4jC*Z$IrN4G8BY4VGlRzp&t?rWhE z`MD(%Bwwwo%sT_%YN#AoD_Gh|sd*6GIDN!eA2A z-Tsu;`iXv?Qvi*vhZhR#z^GbY&VIwIAc0DzN=ag1r3D1jD#9_6 z0h}t_7aA}L@1o|~5=bTGvw@|!54NcprE6nZUwMg6)UQa@WpCndi&jdJCqJjO<>V{k zW7YxR_DBJ4j>@0eFDDLO`6s(7!$Jtv)T5E$b3dj_ef2UG>%Ee}b6^bTI%8{)Uwt&w z7h-RG?Ns;F4k609(OdYfY$f=eJ)-ynTTnMg&9+CZ1deroZQ3sfb1$mZ%thXP<<^7_tds0q4xbfoK(4RI8iG-SQb5qGWJY^{@g5}^u${NG(L^aByv=?zceI|oQ(P#t=`M331hSF4 z1Vw1?Saf@ih&pGad5YFnDKDV^h;oVG$Amdo`;H3|9&^ebQGgpf!BDuFm1LY!7}&bk zEWiRXlq72=G@WKSZ1Ds3R7ocd6^p5EWI2fUKL~_77CYq4;1r$n`-SGV2!RBwW&QxP z!OgB;g1ADp9$an!^)Iz#nh8FxMYAWM5{R)-+#A~tySDyFf~GYeeq1L;8!*-_pl+)@ zKcuZ1)g!o|*8fLvJ#Wo3_lM*@#v^Cr-^?s*HKQT4=5PB$roVNjQ{g3p`!sx@to|@J zyn-xl6Jd{g&s?dSRreO*l~K(I;y|P-F1q|$R~>V2#7IIQ(eG8urUxy5G(h9+6{ zj`+xr1%lQ?dl&wIq)3m)Vk=5B96!soaSnv`J1!N%bk_!pN(32=v@3d#Gzi?Ihc~P* zKQknq&;Rfzu(DH4?Y{-hT+^hH85x1)aiTD#In09-?*(kK#mMT|I~xT$-|^*WiOQE# zGLAv7(?9T4+kKsSN_y@zHSiNN_i|Bh(?EJ5Xugsaz(;Dk`E;BHn4o_!(oWOn`W?i^ z6c1q|*l4oXLQzZ2U*UvjA5GS*|2d%Vib_vxBCvqUjcK+xwOHWgCe)tY1kDR|ysK2? z5Hl@k8SNw*qkKUFS`)(LyDEwToCk2FiZLL0{6+$Itfek&=#|rBk=i9HvZ^IuxgU(1 z0n%<9Ps7I#d9KB@4~5+g=2}t%wLp#&Z^zic-xR}XDR>@c;Q8&YcqX_PU@{`!>i=Gi zyx^QbdzL*qB!ZkkNwv`7!flm_TUqwlG}j4~wK9_)y8a*n+_A<8z6OedfUG%-E&fX( z7LAkoPHiSL(}#x+ggpoOaVsas(mC5z11N6ug9Boc5~Ts1Q+@u0SlOn=i&V{OwHa#5 zbVkebP@}woSP=KoIkjw{g_&`c55@kxri7CnHO-4XHNa;(jG8ERI+#Dm-k{nc%DPp$ z_n5=VV5Y;J489a+80?I>sIJQ^3|CGm5)EWtBHYL(?*)#+ee^S&@`D4*Yij^E`OMTJpv+G2Y_t%V}Je` zuh0|v8{zS!s)EuE7^@_(%Jb@hJc}_3C&cDHy$z&8dLM0E@wxF(-nYmt=T3l%UeeOGhT#+vqqMrM^c_| zLPCY6zbA6quDWN2`FZ<+E?EZrL1<)c=-_B?q-XV?k&V7N6g}O4%Mi!#KN;dQVlG>w zyl-^&PQZpm3a zNka0Uu2*vJuRYR^`5$>EJRq*8z#TlFPgl4$doA+ND-uUiC7pfREVGfBfqK3CVlAnHtH^`?`I*^q9AN4BzJESqssA|Y*%34eR4o6+yXNOiBm4QVakK61 za*OQ&KkwY7;;VJT^nQCi^G}-N?H;R|nT7 z+WBnifrR*c`eptcuJ2qrBIWA#WQTjZoAdj7geM9!u(1y}@&QhAv*?P~7sP~}wuDO( zVf6{G@y0z?emILpN5k^*%}#&)YUHKm-%jB`Ca8UxBWGad-V9kYrFD<9WF=l=K)0yoT9 z9rfj5di#d3Drk?XX#OS?4&skDa*q$LckxTKkI8}w0IeBKXXI(7$TSM7ryzt&EXXM? z0ipK^&@+TZJOB-gHnU1PRy!pYTpkY-B0@|kw@QdU5Dz;Rs}`NwD*C5nV$d(R${@bL zGagQ~5ynHSq)C5zk1wBqnyE4h%W?rH`H=y!b$IXYYZCxP_RXs?_bxII9{z>(+(Ymu zSMsJ`3cn~^Ww?kwk2DSF_D=d?wo)<`BTbecI}tL!R)AzazJNZ?mFxbdCcS_lf$Z{6n%)>Xfdk0LMa`t^fFYV2iF-uT-Irt5>13q9Dl_ghn2vKev zO@r9k+EABw211f6Cv@uKFCKpv76>%SYv6ydg5Qf*?Z0!!d2%o1et-Zwug83X+xq@a zq0L9pwX(kS*hf__lK+%i*|}@MJJqVqeG@89*@W1;2?UiC zBXYKp=FW=m;c ztYJ$}$-%L-{wi%vYM7w$%;>hUKBoPwFzFqOaq%mW_8Gz6M||&X?+20d`H7P<1FJ3C zsbP!eggK0*h0#7=Suijk^7`^S86F-KN1~H@eO_e?KN>^PIFh3igdgD?>;nEs+-Q;+ z?-+bBRTIK)h!2~Q+2^iqkjEq}xLFemLUjMCF&kP1UX`;5taW~ENPyP#?srdbpC&x~ zW+x&Z!>@#X>}n~)(^)dK==LoHbmcq&!szv3LA~D%#l$Z37JbE2bXSwHVs%w>x@l|( zE$C~+KlrK;k#^L$43Q?B;J96W&I9VIL3c1XQ5JuKxI81QDQ5Pf(0c?CXF>QnOnzYVQ zxs44OTh`D+IA?XuO!+aOg5PHcY)#N;M##F2wn(&yLD-jB$)C^-E>SL^cwn5pMR@y7 zm(#XIE%b#F>Vd`vA@xuy>TXCXh(TPJG#Nul`f-E=#hgi8`M$w*Uj!{e4X%eI6$auk z;QW~@_3sc&0jB)4nw9Za_3p@vjqhZOL{J{8S}jmaHO5aAu>TYikF$LX8Y8c`f?)tW zJsp-hL4s9W;euiPIL$3p1afKgz$5SE!_OYEr_9hLliak3G%PNed{^d~BgpnD~&whS$@_lfj!RKgIGHVYpSXiPXC zB$Pvmusb1%0Dib-mGwy6BaS`2H@Te*0fR4jcEUo_I;l>RBu$saTD%^&BMn-QbW6mW zBJ#1rG1)O8l*j5kW5gR`HsL$r_CnbweZo9&@O|_jn^6vBm<%!U{N=_gVMrxpW`}Ds z=Knms&=ff}iqC0$cfwd)^l6BMI>L?gOMU*;HMLtSx2VE5Ii!F$g6vXvq_HqaA`_WJ zepdaw4=(C$n0_FfrpS7J#R8L!wy-b|mfQyTAJasXlIYk)o0ytTB3;!aiqY*h0j3k1 z`1FOQTXgE;U(Pi9;r?{w=UWyML341{#Kk+vH0Qq~j>x;W&!t9yGj~dn(Qr9!4n3s7 zW#u2LSwYJ1FFpf#hRgNH2VPuYWn=dU=NnVT@@>DS$1*!2QJij!?b+ihw0Z93dpEvH!MNf)iz*o1 zBJ$M&mXT>j=-giHQB1DCWpB`@#ak}uX_>CQ5sr0{%nNHnhNNhqoYLoIk_lPl@^c>P zYKhS02&=FxZ2ZR8yL%#DFnxZe-65*ToeDv>InFa+2PBo@v1~SAZPPF&K>=-j0g*`0 zww)90e4G8ZQdmeG`f~Jo`{L7e5I> z$xLp<>*e&*_vgp1dYR^V|sT>%7I& zJWd1Rw)iE0^jxZx=JaF929D02x_IK&uUIQLt9!Ghi!_cdXkt4d$;zs|ZCXg7S~pWIw#&B=!&vh+-eLzi zlA%H>h8sL#%^4{N=pnUOEmlFRj^_Lk3qQ-u($aJSTX!UtLEOQOIV=M!1nFff}!h_E+Tf+uDLp z)S6r^MpB=4DbeJCbMs_$W&M(Zq^q(0A&p;BgLW4LiUIV!$tY4VdPjAMcj-!bB)J-M zBV`!K$+{Hp1JhVN(0A!c65#vLxjC3a7C|XDw9DbL(S~obEhTmJB5c(QxblNR*HVc- zenv>{WNASPFS_iMdF%!yED?2RboIg?`!nfMiHA?4P!Vag6IIW*j~{{3>reHw2R z8d9tM$={c>E}@+6)cp|}N}H5(J~la%&M-f@2C~dn(=i2~3cGrD;Zsc0DUD`#1(<`S zvT29gWTue&gymiI;)*j=QW%X1;qbvlD*flQ6&MxYQ+&g9ZsUr^p-?#Yf>#?|4jkI7i9 zqdH}9Anw*89a-R{$;fuqXYOMK)so@l zsjff+?V16r>u=y*+TQ2loWMGu;57Mly76T1S9%{QVYfIXgyei{seXT+xc>Ws>oC4c zXklS=zT{i*xv=tHCXe2kwDnAT_6GAsOgMVDL-$j2#-3lA=fg7uG6~(Ghts`B#GE* zxbrGWe?iLGx{5N`fdZC?)k8zpXdA23h2iFLf|ddCBf{z>)iG9q$@>cV^}85su30n# zD%>kOBvO+ZRXYC8ajh#-zGkfk&p>qRb?2agFF#cL+$v>YDhVymd0pS^N0_z+87vTs z_KWlB?DTVj*Zs|mbmvx+kwsKWXu_srdHG=fcE@%o{z)p&G_qBYBD|-FjUZ6)Rb`#r zyjDj8Zm#(ylc>x$gjK3!H6Mt%SlA-i?f%IOo?jCIF9OG(|9MNw%U+|(K=+=o}Ft&hNt=M zQ|C!w5EiO7v+I}xg{r!6sCEhGt{KmoM2sY4{m@hRSNCy}k9-&@=aqlhUf_jY5~WT& z8f4L1gR}t8&P1ve6s0hxh>C3ccM^IP>bKm=b&euiwRM|!tk#co#w@;wUdNb-ERzSa zzo5*Dk0X$oaeRV8s2gt!fr7=hYuT{8o?A!)SlZZbCB(IBk>!AivI%`^fiy~f?T8`m zTI28I=xlP8=q>XsobV+bN73yyq5U{d`}Nn9Q-b4~HR_I5v4i!VeL|FbcAGlaUasI{3Snn%6avZR zmxZEUiKv^m1W|J3^$qna-lf$!&kt--d`+z_h4FQ1;bgNSu&0>PW@Q-V5P9XVsr`UR zA4ynUUVI=BY5Ipb=&|KljRxRZ5{O2 zsG3nzdb7H}2i&l~+B6GgzPY?#1>nj&LM?eL#4bUKz(DtKIbCe7UEmGpvwUpO6;ei$ zKtmbtXa(kZfNvDHV5}a7n<$PM>W$JAH>lN#YmGYuh=$uRLf{O1yE<+t9=6oq_M&u{ zRZBk50$T3c;Hj7LJ^$Pb0F-gW#%hwM>1#e3eaVum;lB+=i?f-y@o?A0UsTUV;z3)3-cq$f#{($`bO)UE zmLS+^?@eLS$u9M{)1vrNQf;R2j-Hqp_cQLxP=%{sSB-Tg!=(8Vz&Au?ahmmdBY-g0 zBrvsDkjTe4g1Lb+WJ6Bzxt*76C(F$RvC+I3BmOg!iq}wNY8{r}5IT~<2v&!8^M;FR zO!Ar0J61#RJ7p!TBEjzCPy(tSYzOpJD4|Mfa6?H&@s^*R$S)5;J$Qo-%Ht$XDU(rj zh>A$h?6(>TSYH9$(!kskk$a367qitYly;x>X}yaIbnmS8C3TY#vJc+W6R&-`I+bQ96x?k_%Uq_$Sd=FM zkK6nMeXa9?9fj(*rG$O}??~-B^orRA(QTwOHT*PkQXVfZA8}ZePuF!MrU5Rm%spZb zWarRB$xk?vX4{QNY`V)!o;y@2$?T#`64@AS1*IVr&L`$ZzJogsfZyiPnI1e?vx2Cx_|5dmISL>- zn=UjGsepD@x=LE*2?qZ&vDQ)E5I^R();tf3Lh8FbE#&g~tO-+124A>SUSIHL7D)b= z_+7Pg1qo1Ex8avWI<#QLO2xZ8{Q>-$d6@P>l0&&den8j-XrIT-M3+Zzx^;i*t5y~t z%cluv<+Hbr4XUZ*^x3m2V(eBs>sJpOAW7trNm`R+)BN zV02nq>ZIATSm<|!lw0)PE{!r(GI|G`=V*~_@g9vtk(!%Wo$8C2fs6W^yg^H`I=)Gx zd;^FAR!z?lUQ{~-f31(anELL_xB4De;J1Ria3tBV4AC(7v*uZ#){>-Dp5VFr}Ut` zyz&9wX?)cC-|DIVB_kOlEz|$kwoB9k>y=YedID69EGCEAOIypZ&2+yDB!)8j`xP9t z7S<;72fi@AU6pH#+H7%&7_+XfgNuu>N!Upg8%J(G^6+_oJ~RJNF0o)IiR+G%A_g&UD!OLGuwi@7L#}v#p7m zogZ5al0rRiy}1NByGlLA+`cu)No-PNBxwe+=LHx+q!IV;?KN2)8Oq{2ZXb8|m$*kz z_xHzxzf=f;kcn_T{>}>}IXT^m;&Go3OOIzeGPvB-QGM+yRbxXYwa-A#3&;Jxvsr*s zvzUk7Im*r!UKB7uF^U?M!}Z?M2UeuXo6jz8yKb2%hBCD)9=SR?akT@Kp-kTjG~b7^ zTW)f?WyH^BRo*$D;(gMPy_Sbej_lrE`c4V`xS{P(*5D$!wSu@S+~-o8`g z5kXA(R0OkSe(wEiZ`Dm0yH&(_N^S(u^VA>VA2Ez_r!MnT7(4@04*pK>108t2`Pmtl z+aA}Unv{j0WKv7v>>g>m)f}Gn&xmyLy{m+I)3~w*g4z4R9ghgiK%M?sFq9=1on`pN zKcmD8ujJbD+r0$mJTD~!>uA6K;`RY@zO5!_V;K*PmCOzFPx=Vr zhPocaCq^NLo?6EkPX8Z0SUIx6B)$5nQKCQQ`bdh_6NnO`0;!NFrCI9nVm_Vnrb+x& zNO`{E_f~x-LnEK{{lwpsuw?S)6Kz($iy=oIz|(cOn!3e*8~tTqt@>42-?kKT?i+Fj z0Ux!p3D2Aef6+rD#5f4^nq__VX%czSFzwXR`APn$Nk{rc<>*G;~WQ_8W{^FoHr7ZmxGZOsNsU(dIVZ!?aF%3#l_RjQxc_ zA4c}o;!oQF*yEd!?BjK85ipn-krBTn28}ce)4uZ*fAR&E;Spgp zIW7kN8N2RwQI_lPntGtSUgr&^UQvU8>)HiF)t4igG&eLwunK_TP!6RzvBo%7g8e$WtTpJ@rB<{o(6sf%7qisF zD5y}pj1~KCrggPyvp~yCXp0{)AVtJ=h70hs2f(w~)uJq}(F#qj#g#Qw=T9HHmpK4d z|EoP?v5g(B8`Eo<_vC)5O2HLJ9euw|C5x?Ld{WRnfBwyW2evK+?3JEbjfg7}ipimaKWKFi^93_|j zeqAeW^5PJH&%@D_zwgY7x<6zd=*YP4Bd>WQ+X@I;G}cO7Z^UsMNUA7gp6XhQ1iY{J&ikArH<6xRU*A^Ebt1z z4MLoUDV?bnd)*T+c`p(pGdY;0i3KWP2vL>@vb@K+T;?StZbe-kH2~ySV``&~KU>OVh447Clx?|35s>=gClT7| zW!@1gQ;h&uSAf2RNKi9y_9rLyekuMrHE9?UCpvHsFWipM#I~IR$J+BBJisQVw)VJ{ zU)G%`P>#0Cd#z6|(*TCIN@d(t18mDvPi1nY3f9kZ=81oa5K~fz%i{n@{XzuPkHd@r zAumWveb)$I6$sl+4-0yM&N%s>Ab!+BsB_ulq*Uy;Eq5|)s%u=kixi0K@bm;5PtXNt z;3tl~_?#Og5}$xIcedy`UyZVmeUx(nU$`5TZVE)8I=@8by@G$PH)!4nZ+f1Ya;K@S z9YG8}lV2kKeFNE9UY;40*xqB$tWF(0)Et=1#qp|XL15ff7}PCsH^|=< z2pB5{Xq901p6$1DvvXLO=fK{l6YGnUMiyQ4R7&PCB6nl748~I;FK1dH|yo|7@(ihdg#NXh<_g z$*~DtB_3bHO3;`!taU2os@)vvyc36;VKS2CUh;2STL>76lDwQ-R1w}xKM<2 z0rf^xBhb4987qz+);khNpBo5aNw!!jP$Rs(1FTd8;^BIMjBPQo)l@}UY9_`ongp|N zJv73gN7(QX)51jSpLux#KW6)zShd}bLeu%$&M+CSJiPd~%6bdR5e~+3{^DUa!7BC5 za_d2H#jX1YQ%xeDudDh)bBsj}JxLLUj^%6Pan(Ut$^_yd|JdS-#8UI?V0EHMQKod* zc`PUa!ctA+5<-qY4m)i*rO%O+jcy{qC3-fv#4WO4Bz0bRC&Pd}Q$QnHmFNT;x-=ew zcqAc*E#H}Ty(>*iGJcF*$_z1Kup2RhO2FL=d@S|LtU*zEK884XJP#^Pjr+5Fzs8I7 zE)2DZWNL#UcrKEg92`b@{Vi)VN7>em00B5HYm!7k6&E4 zM&k>5(R0d8tMHhP!0|RO!=X_BNUm#L+2QSbK3T64c(7uq9OICH>>r@H3zU_IqLS~7 zZOU*pwo3RUw7F!1zZXQftA-M#UPTrLl)5|vXwja;hZ-W~83YnZ23_6lcl)Q7=jd;J zEx{3ridF4eEo1t5MJc5Xz86~*MuZ`ba_j`P$8o}2!R_fMWsH1!EICWm)Ttkg@oTmEK6A85V<;nQ(}qh+l<1 zdrf+U`%bcKJ}J^<`R?*!Q` zOv+iDyY;uMhCV_R+tU{Wb`}`J;vOG5KZoP9MVYoLNb$|2H`miFh~&?$fnPu2_JwNh zu;;=RAJYUc61Bn9p0yl5kE5=pQd1;^`-`0eJZ!F{6gUr>DwS0;4h(0;u$QQ8S#laH z8riUd4}#1f_RPi5iW}yY`B(C?fS*zb(!W-qtOlkfI@AF_vf^PFyPx34*$)<_rNz+K zs1OjL39TkN)iwFr(!X8bvNbMdUhRKhV;zq2@6j3lC71-0Y$z4Y@H3m=-0NkGIh))6 zYq|jMe3q}4)a%JvosyWFY(U=@X`?{KT!1pRnjUeGYAbJAv4B5!)X|Ru8Ga+tt%-&# zh{6jNUNc3qJ~b^;q_V8Dta2|%0+?5$5)zN>r4Cp4er)OvUW_0k8xz+Y#ccT{IQf*S7RKehp~ z(bFkgPhIR@xm#>Vm&V>WymY@0(Hw%$CqdB|x~rR=#T-)-suR7~jyeSR3G(v}YoZqa zTmL~<^$1<9zaY{r7|!qLJ;z(OOxS(JU&#d!1!U<%$x4hGIO@Ws<>^A}kJcH-IO@0N z>2R}IHyw=o4QB8|M}mT~AxIj(<=`T!p7`pQy-!CA%W+WXI-l@1*X=>O$~}FlCl`Kz zHjf?b{+Hqa{eMYx!pO=-`~TkQ)u=gahV|y@>7N1HM;4Mt#e=Y&He@*!fNs>v<;hI} z0$ay3d;fu6i-0(#g z@cF*Cc)DuI@qT%|dPyqp{RcrfFQ z`O;_+4UPC5uK!g(C0+*t20E>*3%4OF+g{FBS7XjQXk2u#6NSRQC6BH0arYk>y+Wwc z_xBeTQz3W?S)^{D^z#dzoo*%Zyw3-%rzc#SoSx=@zVDeg5KBPVm4lWROY?Ag}ic~3wDv`Xb zbx3!*rD>>J!SzecEnr7}m@&D(kNyEtXQpZ!CU-3jo6HPL*N3m%uj;Sj6z-p(rP+6L z2&t;dUs#pJYjj0OT>H~QTf<3Pi(Aq(JWbCTLu~sW11!hVn(kZ8)pKCC8Mc5Zv|7&STFSBs=rts#It>IxNFh=0h%C>4oE{~5-1LT!s7Yl%JX~Yq z@8`HHZ-LT7oCW$lw>qpOp>AA<5ongK7ri2Yp|=Jx=FcdiJ4zWH5FZP=UQT>Tt* zg}zCB;zmRWqsJJ}x&4#7abrK@;kDR1#Q=7H45AptPe{##arWuOME|QsJ&IBMW^t5p z06Z#EfM#UrYbS$HtA$jqzayXlF%b%6Vh0)`_rSw5asA&NQbvNNNEJ`1;sshZWgC|< zqxglc228IPaSH?^hLi^}%XF=f{RX~7?%ZRxe7%(zVodC!;s0Umo1!Cunyq8owllG9 z+qP{?Y}>YN+nU%D+nLzO?eBm3?^@r(edw27-M#u$?Ne2~`<%Tgv-2U7I8!;J0wIaa z6qdM~k%;s&-I9VQ*orQ}F#Vt$AaH+`!bxK*OL$%in&-fFNB{gBw zK@PpmuS_z+8`Gm6wUcPh!7syKb3$S&(>1@y{o4MufKI8$H-rHUB&+x`;SG#-y=rWO z3K4YdukA+VFpbO(UyP4ghcP}*G#c;6k~3LQI>X@8$yCVu9f@+o_g!)aPl12q5Zv6t zikNZ-&tdysFCb_%qmj@;+c_=o+8FELgp#maoY=g5&^RNHv^8KFmt(V2IpZnAsA8af z=#uM)9iBs7t+EDgsRX3-8Nj%?EpX*Y_bxCM+0X;YXcxG^qscQ=@AnBCgv`?2h@D!6 z(Fw=foP8ci#?Oven3Y&`=rBY+p23Z!Cg%BZmDBztClaHA3I|A@9xBlND@TZn6O!@N zfgdCJwEFEZ#`dQ{EciFwVb(+aT-qw#cLy7jd*vI5VJIK@K!I~?Quc>Ad}9Qv;q^|7 zQI=73$mU9mk+^U+%L(%J`na0DGD9kT*0f9jB1}vCQI^ETP4>YMNz3iBemmcv1|h1$ z1oFM+g#Md>IoX@{$6x`USqa&>F8=nsRV?McfNMfFP@taJeR*FoYbfv#iCfST7tdWF z9t0GG^Lwi81s$3pcZWV2D}ON9dxlU=}O}z{K@hjl{iaT zU+!Y)<1%VaKB7|Nss`c!o%wCK20}^m?s4t&IN*pCD#vR~<7Z}If=;x{${zxtF{y~n$ zJ;ljaVkg%HkM%U&$rp}5qN8pgR7ARO>?lL-{@q6pf!>Kl@Z5!E6$YP082+mhD-*P= z83uc7ID=TII^&vCW&nEyR6}PtmK^Km+a}@;+ecn}ElNAjuRo_e;|^Ok$G2`?pxns1 zv7N>+CFty)%_gfEg6tlNIl=pA09wpGN89auCqHLY&tlt z4GzUO2~1P=w%up3nMOt!LksRKWC{Z+Db8Aj6kcLU9Fb+8dN`0X%-2amdm_s;_VC@5 zUrU!^H=P3}X(5^TfLz5WqQ&wCte5Z@Z~F33Fpr^y1#db9)diG6lJOSm4*#M-bWF(B z>Ld``fp2{;PAfSVwjq712kYc?6yY_#cQR8lcC~J*hNW~dc*n~ya#Q!B7JIOyWcRX` z3|vVuU5>Dk+7BoE7_Dcstm7)Jb@fiLZ?2>pI?Nh6wCEzHH%YgDoT;_209Uumf!nvy zx$BSq0qB5e7uL?H>jq}!BG~dNzxP#S$|$l>Z$@TyW4BS!*ET&NL`j>(Xv0VBag`cG z@-yV>BuhS8^66R5J$v<72Uz;J&r$`+q4CRkaywfDZsoef;%$7K05l|=DUWAd8l+-; zsBN{8w}%T7k%D!solCLUD%t6}dBshgO`|YNUAuWJ(O2HmsB1Gbk=BTA z9ah-uqZuO%{Yr?Cki%mkzTj{C{G}(T&(xc3h)&EpchzSfMD2_k@X`ehz;4m3MF(_r z5&uaY0r3r!>84K@CZz?M!}mmVyZT*KmU_Y5b6_my(DmPk$t@0Zhv)=>^<1V8`!Kp8 zI}MX(2Be!Ua!a&dh`kVNt618Tfy9lojVLqQp4rr_jdfs=K$mYm6z$je=&)sMcQ<{Q zhPIi-2OjsRfJ9gZ3IyjzP&*eFQApM@ip&!B5|+c4j)TOnrlw02als3eZ|OPM1kDs(ikIj zGW_Ju4Yh09OG)iC3=TNgcO=>>vcM8nU!D@}660&E>f>|F*NfC$!{TE=T1SmJuOU$YbP1H1;9dx!R&JPOV;hPUnd{mp{urauO~ft#vx6lD zD5RB4)l5<3aTjTuYLm7lIbF0pS_wO-RywF{J-oi8q0uN>^DUJ1S=9&X3D}y-#Tzw& z^h_=+G$D!H)lcB`1*r5y8|r9RzSS8WB$$fby@3gUjs)*q4kkQ<#8Gy)_(x>Bxu<(g z;=xMlxKx(WR9DW${99f}Q#YAKg-#n3NXsKpnQNAI0z}?3TDFi6lz3}R$5m{H!bm~qHhqsUy6N(Yvky+(ZR?5lV8w@794s|ka3O&T$Uh2M* zoPu2IpOOIj58L$*nS%4AsqR4XG6ixN!~VPXJ~>uAF>BCG-?_5E5qZJxC3y*UTSbt- zs7!(91Fl$2 zN2b8wIIVo4)76ixaAEdl6@!pF#{*M%4i5ol%4#|EUdWqQdf(P9!hTZtz``^d7mWu zYYvx>-z$dn`yk~inQ^c|;rc|T<-IUECAYXJz-nNL&@blmOK>{NSPGK`KXc-U@s~%X z%*Vl5A-ITyrs6`|fo)VhEQs(V<$VUb)?3S?e;MDSoC^y?_m*j){9K{(ch;oQ#N;Qh zVx39>%?;Xx+RAT;j9-zqxztA$eyTXz*0-6&zXIaq;uUEH!>T1s3ONP2+5!j}Bvf&Qk=A)6{}!;KgAe@lpamKk3Pd&1JQje2I?hndc9AhfBhsn1-aM!T zpZ@JqPZN_)IqqIADK1~7X$pAzcM-nHO1GdEha+hX8b}#$=0H=;rEoP$uEEd~tAjq? z8AHP0Ob+1kgmwCLDKT5tn*h3vVfJBy#UT%NAW97Y5lM9J~!VrI0PzWec z6II3EB>xIhZ|pOWF35o7UKiUcA~8&4*s+c%%$X<@@&JC5(MfQ||S#>QRP2tangR`Wq33@~DOW*Nd|OY(qK zei|2wxpx@mo<7W+*>pIxVd<`%gLY!4x<%@-1lKm)&*OwR=kef1T+rzFnEQb{S6jz6 zv@;i+O$*wlbt1I0et)dP3UiE)+{~^kN{fX)p?kmx!v3qWv+NQR-(9brWXra@t{Ak~ z&hk5=&CFwt8LjKrb48m*TAm~IGWLFmBaF2}2I!fB_rB})_8a~GhH{CRk z1wTJX;W&c_X9@rNo|MCJgfmoD;?bX`mUe1=q}juuvJ1`S{P{#qCnTg(SO(Bivzdua zR_pw3P?Fo$uV(=4Jh|v=GpRq7~$})2@dXcvSQ!OY-VxuWdkGfFMQCst)cI z?HtmVvMN-abD>W64Kq}8wDV}+588^gJh-4@^#fQw^~KmzT^vZO-&09ne&;rZGKJ)2w8QL05`OD6d*p;H|yu? zv6e7h%=J|q&UIWvK&NkjaGFSBd)=DWT-3zgx!qJ209%)*JhR?5*(aaf_SQ*MqiIx> z5yB-0;mMcCr$!cDY|V596Pgk3c(_yuuynZ8jmE^^eo6X;_S8;3K1WgXk*IKIqZPpc z1w^iG={-?&#M_eh zU8)GDc0{tIHdBs*n6}?^oRn|Le5%E zuFTB5JXvDPXQ0gENm0S+jm~sjZ-$_apDnQ`OAy#|ZcPA3xL^}R)|m(Rp}-{ietdLh zp@Yjlx4lawKbpZ1=@S*!!hhd5EEe~d##c*XbKbzFe6jma20uclx4NHh!8Mb#JUs=r zL26_E0yHY>1J2&3c^6UFxz~IjGL`?Kx2M>(tJa`=dO>!fF6Cmv-xNeHO$H2gORYXdn?Bu{P2b36VJgMO+U|P zP!@R!196u}Cp~^cdI)pWV$DigknWJi`zM9I_;fI1?z1JKPAAa5m0s=Z0Gl?^)NUy>-Hs_HZLRTEn!N`?LDj)?B?;Q;tm zaAFDS`@J6nt}cGp!-V3exVtXI9R;Kt{M@*y+pWteCpp92}=y+4V-WRVp)6pQ19UH^|5s0jewBS2`3-i1BX!h z@Y4U)6mz`f|MlhY^H6W_^R?7Zzw7^V9>4bUc}GGo@cHlV@aa#P6L%MWS(2wyFtaD{ zwPgbY163a9?3{m3pKsUq*PQ?4a0utjZH!9TkR~uakzg6Sfs7KU$WJ+>*NgVuqGP^N$<&j8dll*UO|J;6Y-K8ZofZ$$;5wiGps&yo_InbRe=!28U{Hrvf*+} z6C~lyJ8gV1#%t~(`&k+3AcykKix$-;2>VAc!m=Q^%_KVR7hwvXIdi_f@dKxV4}$o#N8Uf zBLrTo6YHij!2=OTHA137wh0{823tY4Vp{ONWBpFCC@t{@19f7g|M)*4$H19%y<=a# zlv^O`G%kof&BI7yQ4Y2u)1@q%M93#1Q`X4Th6=>lG_`4> z1mvOAkh^U~yOeC3IOjx(bc@T33BEBfOE!IbwkdkF)!U0o9CO@>z=M5y$*3u$;$re; zpe=P4V15~)<3yfWDRD+#^mQ6W-`*z8%QQ*@pvc7l)iptd-HneSnXvtt*6C8^o zMQD(2pphlJ@30X+Wmcl9&TK`PZcXPZBl1a((cL^Ekum(E_SbtAHUD$j^vmjlQ?wf< zqy*dbQAKulKn018R=k1Tm{AyDGr1x?Se1D=HV39j+|xK= zihcOcRVigamSR^z~PC7YwbEl`z_vlEYS z&C#Sz;#lXS{PE$37WGEkdl4F9_aWA&dElk>Bl(OIwmVppYi@0;H66(ys+L%9n43WF z*KE1I-d7I8HQjQ3j?YBB2fs_JX^bADJP2>vPcjKYUd|HIkbLYU^#LkQ3wQbn3K3eAUOG$lEC)6y4iF+d=p=5^$e2`wk8 z^yUEOM9@)TGrFTYA)!>8*j>6D9^XZAvnVXiyfHp?5CH@lLCl12Mt0FB?Y&kv{HEZY)dl41sOTlq9HU2(7$XxtAyPB5XJp z%e01^yqnoe)911XV%3#7k~6FttHse_>mpi-*=k-;&*)75PBLIt{6>kXbXm| z%$_X2Jsl!*?P>igdMl~J6O`W3o`&qce`-k5b$4qMK9NXzPNIiy+oOqSWl(c+%>vP)Xx z)fiM|lyIykaR7pu{8Jl^AzjA&g%;|=Nik>RW=+mrV5-;M|DsT&cAUbdG0GavBUdSn zXnolDpew1CkbN`aT$h)LqK;Nns1V;cq%Y=#BGnKzG(Nja`v!4R$Pz~B6H^vn{g)eB z28U(p{;$xY4k-F^(-fN?aZp+?(Th%uC=hhL2uM2%LGyN+U}o8&%;3g#)AphrnH~W0 zVB{SjOy)}W8j>DalpK>cd=R8gb;v3F-kq7TQY6kb^=y9t@BE!7=`qY zt!izJ3imZBm+?}ak+Cf(kEqMZvWx8$mT)&mRF2mfvPn0#Sl&o1LHoL@tgs`omKQ&{ z!p5gGy0;8R&#D<5sIYnqhwJ+zl#NlqZ?nM!G9 zvQ3nnjo)H&@@mT7xf+1QP*wgZcxulO4QA^GLQGa(7$vSe8+k?M+8>@3wK$Pj9*Lhg z;~7RMJ?1kC?`*R@In)88%BOB2<7dK^EE5sZrxS?Dz^dfyr|>p67M2?c+0r*o@;X~+ zu#e7I9x?R*tJ)`c-1S+biP zY=d^Bh@&TuhUF&H+G4~oRBLdG;bnnkl>0Ss*87X-X`VFBD;nI@Or^)MH!FXuN$!Zy zV@K~;6|+xVZui7xwIb?VceR2!qn66Co>nj_W7uzbAw3McdKDWv?{TJ3f6254XA}2A zj_;8QWOJs`H-%>}D=s1$$X!K*Mdi+tVv_E5D-E{5gAYwi={QAX*to1=7+GIU7EgI$ zh{xEb*ogXaR#8*qPo^(q8@1W?dT-+jprqtnwa4uC?zDRAGQuVVrHK10evV^2gMq|) zRAPCY;19P&@@X}$l>#Cepk{l|!(H@dE@t&eP{+cKf$OE)^H)8oI_AZF95t;x=`QCX zk2YqClY{7wcyacucilu$Yl?#X5n@+?X9-rksW7MEM;u)s5RjNrhvUf?;9DRWn%!^k zK8V^=FBN{f&Nz*(HnfLNox*9lnPZ0A8MFKK56`lJcI)9aPI9Q&wo{Mg-x8N)MhVpw z$K^JJ-UZ-&v182jNUgCk5!gI)BLQ|6BMagrx zaONDHhJjujdM?UZ{N%JFxjC@3b-Xg=ES`pk91|?03d(w3x{~%za=OzCe#-OL7U`XId09?eq60!qYFgS7T8i zBHRl2%Bz2>14kue8&{*lJpyyEHRVdi4sYv_5N)`i?-~|m_UCUy4_N6aeeaFIsHJ(h zX1R!OdL@T*ruC%uWuOG|wvz9vW~2#Tw*qAI@oBi(D|7K@Ln1U( zqzQHk!md>Hc1`W;V73lx4z{dsZE6eoVOZ_nMCt4+_RRdv|%+Aw9%P0;sJf3vS1 za73F0M~bCjpHAgaY-e{eh~S;+K{@_)A|iisIxP+`P3y>q6S#h#(aN7!1&F11j77R2 z@>PLyz@Gcilkxseps*HXGzt}7eh?DYXvwO9$QSnJ~$60t240N5W$joD6%TA$3( zxzq^EnJCtnzf*9H*RD48IhVv4c3Cs`U& zpTv%rA5C)jN*9|`g&_r4)>XpYvZeWw(RhZtI>Qk@M<^7ujrBWikG#uSOKk?{aZak& z4dWt029p5)V(?d;Vfta{^PhXhG1VB#mV>~LFDHj7D{e|B%+@QR$Y0A?R#C|*-@qpT zkj+S8fJ}5e%lXB`7Od(TM(30vM~PScIR=`OnZK?RQ`4*%2D}si9HYZr!f);Xk&?Bj z9;ARtk#sThVP05S!7A0e1`jA%z=3{Jf)CI{71+T~dq>Npxq-sAz`3|?wwMz9itg^O z))0%W5G5TCdqjOIFzPzz$soOqdzHa1a_H4ki~8w;7ln}GE$1k&wd8+Qb?-Lnl2o!8 zw}P=oxW{O?QEkvlP2Lf??cg-+tk3C07$8oT5rWGOmXEHda)F$;5rWrEX&c|Cj0Jvq zu%Z(8eN4+Ep3OomCN+CfY-PeNKekInewqG3e$T$MGpm74_O$NXR;|oLyE^_07~1Zl z<=RH(WJjqlA0`Ib5R2w!669D)-Df|a)EQ2l&OB#%n}0BURkMxz$u=c!kriXktjT-r z)$V5`)6W2L4AJ?@V-8fw`XF-=Q-9Ci`1Bo{1QE2AO%UO#$IHv}fxml&`skoG8&rQqABJl;;o7hXg5fhE5 zL!|`Ol%h6&H4J3|2~088!`RJu@mFCGH{k3hg(Uf1TvxVlv7^6H&^1DcG`^pV% z%5-P^0Ri1;ILi`V!!?=Kr!%+P38_>A=S_fN!gKY(u@qN`f#bT>&gGWZtIj1DEPh#h z0W?p~M{}+nwtveAvfXh42QqK?b#SKcXg6#`C!h-l{9;aekW>cPLq&9Bgo7@1UiZ~B zK-R!Ubs>M~Hd`8xxIuHVU3@r%C{-4MgX18;)%WzZ2Z-uDFRp>*&~K!c^z;9NKi8IX zR8KV!^r8hd{3AC}4CkiV-}OE0SH&FWe@8YJf9l&u!wRT%wUSi*ak3 z|7@r~7W;UDYbObNxX1HR=UXO>N{^YxccoEVYHmQwFt3GGQmhoq*r^pz9mV6fm+(no z3bv}{&rD|JVNHp~j;tAS9egFlY5?pRxVPaG}mE_zU&o%v~BrLDdi$TgTn!No3Ejeb)EOc%=;0*JKoR z&u;Xm%3O@)k$j{lT_bgvY3rHO+e?$SuH=JT5YVghW!H=QC>Ctx&LiTo%#F5 z&VIsaK7~CViNK`>8C|-#1YySzoz5Th49-)p}1= zghDFdNsZmrt*I(Wl_sXy3JJ-Mj$Ng|BKPw)&nq_9kBpLQ)vx0MrRq395@(w zwlWj-N(^Jd9`tv>CtQOdiYfcYH|%7QXt%8tzk6z|+`QDwd6P6#%$C^ZH5%`2PI;8!rqs>i^~X@xANN z??XrkaY>M;ZZBxH4r53;_seJh6FFeeO7!wtZmaL-EsecU5$ZaG(fzYjU@70})7xY* zA3$z$e{H1oujxaPj^~fhEqO8e(SPsEn?ue+*ax>-F8+)S=l%R^H&~0)T8Y=<;tRm2 zAVA=`;k&NH^Stdg*odvW6_??$gr1di7on_Lk~;538YA>mE^Fk72hFNfU@yA94O^p|9^UllVUO2t%C)3@IK)oedI?%xqI ztv-@tX82!e3T+D&U4c%hUR;)O;*+bH@zCccIm z5z{y`#B36wT^CFxWlv~eQop~vpHd9vFpDh3h{1_&ye~NAlI1%6CSdNIe>4}G0|xk| z%Tb2$&Zk7#-LrLRx<^07a9BpzMQ`KA#k=+|?O&@*GPKSqOiAXv zg_nOSKPGyZ2rgFz`=B;RpiuQ&!;=D|&B1A?w#x-R&XW)B2kMKVICJ0pd_Rtzqxrq% zyDo%t>C=B3rs?wq)_lDjoZtP@a&K3~It^)a;*hkgVeiC!YFim+v^`_GFlt0wFg*Ee z76gHdTOEb3S}H95Lto1;G~q_pE;Oq0cX)f2JsnpZ_5 z6&>}&E&yuR3U`_^*ko`p;&u}XVcyK&_lG|kz8p#P6kocF#imGDUJ8qerItb@DD>e- z)tmw_$OrMW71L26SHjo`FGX;GRM?HuOfj;A+)a}zS!=D~)#m zRbZGra`*H6VJa2Zk6;-(3C*!m9dCb;%5qd%TRcC z2EL{+LE0piNXL4qdCKTI#SEk}_8Q4gqcfGZdl(Q1JG6>$6@Qrb6nM$PR)U&EWVrO} zv!nc^dRYtgrS;8^C=ax^!8l@R48N}^hrHXe7p;g@Sl}){NG-f#%>WPse@G_(&Eg=( z_xG-I_>E%)?`DpEAzE7|lCrE_K?+XTLao~LPz4u>3ttFD+MsW<1SyU4nFVjSH-4BV z73vWZ!9H$0T3D!g5LX{!&u!J<3lQL)8*t#3Aq=iIH6%v^Ny>(TiLD9x$pTMI;jfvz zM3VtB9H~iq6&^qK`Uj;LH<@ojB8TfB`M1G6>9O6p=QQ}w;co)B04PqB73c+Ia9LQ} z5*AMj`e-Uu!lHlP$tZx2ru)}gGGe4nlw|7LvOU8FuXLq8xi9&Cll5G2Z_!)Agm2G4 z4%QK!Hi`c*Kd|^cA@`28O~z<9aij97U!}rY6F?8YV9+GIe!0WKS1=9J$&!$-akj?j zb+mz_-uPjILmn9?T1lx9B;Pdjhx4iqWmMv@lIc$puFjGH5z5bS_F6EUT9bh`&E?_W ze)|&PC)56#c^*>q-=TEU#WsmiT!t02Uab!=0c!}9TTE_UbPik6xL@4nVFXd zS}Va8wF9}H?DY*|%MD=`)W4>$mvLU~5W|k8)L4Gxb1fmGjU`Kz_E-KnQ=3|-K? z4j*W0@HpZ4cb|mrq~@}7c4~x;xV`rm+XRxU49nbs;UbevkEiOSB(PU8VlV*Oho>!f z(QJ7^C`P7QNEx7ZG3Dz;U3K`?B#j=see2Fx)en`gy0(t zN{SjO^QCtUM@F%RrJ#2c42sW;Vw->|8ZpUxws@Hp4NKzg59+dunDq*PKJ^s^0Vs~| zgMe9%s`#f$o0)#*`8V^hUlC<2+H8{80F7_Vc+Sko(NZli5F&A?GyLTqO+4JHV^VyO z2wztJp1auOoONx-Gw@UMCo|w-It}!yr+K z#44O{@I?L>g^o{}{o1V07>wvDZ9y=sE!gJlxI@?tkdrE8ss!R{cYFF^ ztrLv3lh{k|H(poK;_9su3fOfE?rIm8E27=!etbg9_<885Vqwg9XM%kR-(5zKfSM_N z1>P*)m>u#rGG6qy1;xX zcbHDj=8h~u`kg|V7Mc0zow0q>*;?#3v-xYMXSqDgt+1$dUj>Rf4S!`udn~kE;2B@!-T-1d@u8QW4 zFt-o5mkyUJPOBNq-Kmm8ZtBp8E@WW+8O*e%t3+ao1}Mwg*gj5Lv{fivmd!_&0*~b& z0lC5bonQj0`f^jzse}EC)yUB*Mr*5>|2ToVEaCE+BkB_(AI_Cq#}*>;F-Z2w!M9z` znOhf#osu4$eOuN}N~9I_n`0pIq^r@&Pt8TjXfATUE2)c7`XV8P-Eq4jtCK?q zfanEXt?AX;chA(5lxnL$_3FD;FZe+a)1JxtywNDD)nJTS)Mh>@fy6mCt~FNj@77Sitf-S=6Ek7~D(AxclLfbdNK`-NS%RT5YbBCy6mMAQ)=E{k=cRX@q8!Xgs~I ze<2V07#0TBBe{y2YHU9>=z2(DP)0&=TpN zL8I#uW!%QmgrP0yrR!jlwTYC}u4l^@qq9f2dL8{lN?J_88q`}Kri*5K7GJ>aP(fiZ zNSqd%4uqZtM%D#%rg|q*1J>1XysxI4>PQASZjZW+?Zic@X`G{+-NSRar_|i5yyVz4 zV(Hl!z#L#UZf#y&mpu<1JK+VUdMl<0SR?RC_?p3!dhco%KOtR%siaUIV=^3=i23SR z)jFg3UDN$0TgzYVt>_ucP`djlIn%agk8|w`MsdgpZ=xt$g#Sv$8x zyJ!;U*|}^A>s$v(CD}5XKtJCEjGb)TGqezF>>RdxN>636mc@W>l171_4%n9=KiMT& zOG=!UEGdVD;ie157Nq0O@&NfT6@Qst@c2p}GF5%uc*eFl+mp_0B`Tu|rRgG{tceE^ ze%=@@b+EkI#9x{OM;o+%<4C0~zg6~8S8hc%wwqRhx$6UfWi^F(AElMf%U^nTA}KU|u|*s9UMKttTMviJx@{BJ`UtBgS7AJS z_Z2j82ixJ5zlW_>U?7e3Sb59@Yy?B|4R7M}fW*r>a6!x=^Q?nMO?ctx*{XB%E|Oy` zhR21?Am&M9%daREppCC{)`&{#jxKg?HMd?_#IbrJ zoee%Cd*yX96aRbZ>7r-C>=OUhu75cZ0Q94(`sz0Ym<7C=gR1?p0nR>qKMIBOK)70`M&%8m zk~7hbIlQXJ;S|vL#{G7xk%M+w1?KQVM4nNMCr+UG<;&u$(VEx2@%LR_F9hB%aRvug z=lL`BqgPLZ9yWE<-b~t+MKe+SNN0=N&_*9(W*Pj58Qv!!i>(H>m}?ciaM2g%XO0G; zRH{}ua)BM)^ly0IWE#F3Gs<}wojSy=(Vrc(UnW_9UQM)?JzvAa6EKpjb%vy(Biq8f z1}w_06S|xP5}7eMW#DFQ%-@i}nzEv+(qQP0u%$TJ!BA6Ol~%4osc(H%7<>QXwwIv; zZUI!I(B>UgwvNeQDE#5`Z6j+5lac3b?IHZ*3zkt-%*P+bt}@+xGJVzNPU}<4F#a3I z37<|mb%xrmCJ=sEl+JaT!+-zPV@*_!($M0Qr+(gn`7BX;<5)O^BqM2HNx4Zu+y=FH ztSSo}J6N=oMB?8l^O$kCHZ}I##ZcpL9aEZoMQ-CTU>?R+;cFa*E>D?+r<73WsUx5_ z9RGBntArBk^HQd1SV*r>igeU`A5yBS+enws$W^KWyoZ>D@98jSn4OwQuOp@P>%CO= zhP&VO!Q=GbWfG(E#su|oxnTy2J=jQlBxV^-tGOLTU<;2EK$##~aFga{n>eAHcd;I( zO!}B)@dEW-A0!((N?e53(8I`GWld3$@>4z~Lt~vJqi@PyIg~^}uHQM)RRiZWVBVJe zNaxzVQ{6`n15akYBms;d**+7tBwl2)3^}5Gb5`GKd-4C@C^9x_{B^iIWf$8FI22@lv1&8#6f1aF!FL8t#XcVD%-B1z7wkTvEd$(U*U5XQ zqqk2be+b`O%6o#ih78VLiX3LDj&R3oOz0t{|l z;^PF)n03TF8Pfd4tO0eRj!i@wJibG^OzA45@$4R!`Aq_Kdo?~E?bWvUvpG#!?dhq)7>CoNmn@f+)HqP`l; z&YF{uKnO$ZoqsU4p8cNtHD)#y28*!W95zyb*#_3z)1eXdvFJvjY)&!fXCNWOZlRhS zrPu4(D<3tZ|R;N=lKo?<~gnx5JYzno1H)pa}NE!AJ;b) z?gaBY-1UNhM=9c*zmL<_^y%*BmqY*0+T73gok9C;-^b_WN4;N1s3e&4>IuXukPc4({Q{G2-ix2?+FKp^ma2baCXpoDgW zkmq&;B&Hj;_f6C4_;8vfKY_kp-|wgkh>PdzIfr>tqAkISY$vLb>%RuOeW=1jKX2d9 z*9;B@eNWMYUEwQd+@x&5KpaLtHM;2ADOFLc)-HL8kml)?~GZ=UM8A zm8H+*=HT)*46ty*Euw%Pkm-anXSIAmi@oW6nf0y1()nRfL@hJ;vT1r$tr_$wpmhE< z88n5YQ|y**i`}!cSeU&ll-e^^wUcNvj*02Y|$ns1AaRDMOY_*w72;LKZ6uJ)ck9;^X%Li={){HKxR;Z%=m!&(m+6mA6(-EZ-FcIdxw!!6(}E^4Rxiy{%iqVI4<7honf zU?W*|{DwU`Owl26E9~`Amy&~tftme-VizL$I<+$#S zQ#9V9Z@te@LhB@{pILk;ncI-V-)EovvfNTsl3)SyM+VoS_fi;-W|eB;Fm`?Ttpj*O z)NYSm=J(=Gl-lH=nXwKt$k)rN*`9dTSVMdJ8BYHa%MTSPQYTM9ZoE!;9CC7vN8$2G zo?SyPeq~NA7CrG=|j> zUE9Bij$7|{dQ_X6r=;?bVc~UoZco8@3G?HImp{Rs!ZVC|>lIk4D>yhO>YAmnHY}oQ z!Rs9_#wK#6o(m4z7b(6@?u+0qh`6!LKG4y02BN9nn%%vPfF&x2jBX0 zW%p!o+bKcT&InFlu&P%sL5wEXRXdSqJsyrP$8*Wh4r9Z}Wq^C2Q@qJOK9!E+elgL! zY94CCV7u=3Vs}ClCDE$t9ZCq7o$Ev+mp7Qn5mvMM7Qa}(gBgKN%gdw{;i4{Yq|_;m zA|N*7G#IiKtmHaZji+6eMBY}B{(<Phav|IEp@-kkF4$*d1+4e{FFuxkx zjmd&)SDEVPGEbBcI>{<^72Y{PWds}8B0p84sv_AV86>s%S#wI$uA{UEX1CPljjY~0 z*q{b*r9Uir(Zk3qynz)j&SSj)!`L@PXBI76$2K}0+qP}nw$rigq|>o&+qP}nwt2t% zKmB)%^Kjnw(_Xd5s+zS{?W#FX69s7K=LK1rR9LCNN-J&G^j1`(wJ)C6F90xE-mdEP zRa$-t<2>yH>Otxz#)S4)uVOyh`V1-Aj#SzN0%<{cUd;udMuA5sen8@jhpH+yL#;ss z;Q}co(xd&|N(h{)3#n>|pa)`Nh&>a%b_WL~H$-_(RK&LRHiyA$b%UU=ep}=-5n5P1 zzn!&eErAjYFOr%38H0QmyWm}u5)l|l5%b_-sZXF?!%dBJyZ5ZWug?PhwV8k64MP^S zf$6P#^Y(_w)rXRj+x|^Ge+;KAS)_1>EjR(uU8W?NwQ0SJ8ca(gRE_ltSqJ4|&bS-0 z8IHvk7@SS>W2H4p_4ZMoi-@LTV1ykB*-W!S=-Pm+Y@en5H|yD_UN4%k#*i31X;H9d z{b5Q0*qFzGdHXY6*+;uHi4l(q4A?`KWXEFIyAxV0bb)qbpm==l%Ek_H#XKyEdS)D< zFK~7}i*}!G5}IA+XGr9^`iMqax#Z`)ON<79UYnok$l5{$2h8FcE1&}!M5tzv=Ox9t zIpr2T$1hAQ%I^FMg{y&P<;bCrCl1^jFdp;Pm9fd<3X+4=52f`cXPf7>3oRjwpckSi zq?4O{(vDs>f}rpbNAXcfcL>RjUTTZ2N1Hk2Ebf2sqD?{tKd2veX`PtMXP@Rc=(Xf} znpN$@5QF}`$3@2brqSQhSI%;!y_-fj3W?xQQg4AX zy$O@R5knZ2qfY{sYlLpS2`)>B>l9*z`l0N;;HVo=;TYoC!p;TAw+eyUf2UWp{?3S9 zPmyNxB5d^C&{Sd3| zBu&j)7(?LzycuWrg;lExu?&WrQs36)ayGu0;s>lvT^5shwWid6s6!e?gU5-1JAiF7 z-)^mI&l+b^Z#C=sA8`M##}@1Be?N|WC$O|`%zY_Y-_~IIf*&(rJGEIQqaSOYe_tHk z@XJaWPO+L+n44BGsSgaBG7a`G7WH}-ikJmfg}%CZQ>LN&|Dd`|D)<*i7F2){JluGl zf%X8+)$f3c{0rIvy>#(L3WjHiO=b}V9bwJF2;qUH19>>`i-3a5sZ0(y@Xap1HFDV(cjS6z~4_Ah)QBGY_!~t zxmKB3kS!|-!T{%}>1{jle$voUa#o>6qR ztj(CK&+x$^KNW=C)%3+o;hDzsSK>@k%vxD($o=$>z7~Nff;L?Kkke*go0z?}E$5#y zC^RsI;vAl;6?S`~!8L&Shn5%63c2D~kCJ#C{&cAj*;P#&SQ~&_Oj=WYRjr~I`$AcG zl4j}}9!SaUbQE+0SsyIKR_(evM47XY5v9M3KaOmLMiTp`=B^6661FI!jxt)#nmo;# zv{059TcylD_8lEL--|IAvmk(LO>X{{`AR9eZqt=t3LYA#62SS9jg@PeQ$Z8{KA1^*bN4n{U`E%k{6_xPC*K3hx(yyV3pyli zv;ILUJ;49bq2Se}4`%o`S7nMtQ1a%XUtUx%uv`ph1ZH@ig}iDrH|JR0ty+g$Mdt2+4J=<=lYRSOPKsU0x;&>umUwd@5jw3ND;q>;n?gVp2RfxvOQsrl zee7DwYUJ950tuA%Y9wca!+0fkzKZh*RtilAX|yqUk%M&IG{Ri!I@ z+FqGJLF;Y0rl7x!s`4-xMopt^hkKoz>VubVCm^rMKbg0>msKk~&_USPM$}A0S|c2S zkv7SkE_#_eO4Az@kXFI@th^K(X{R0Ke^#OppSHZ4pjH>O{V5Y!H!>Gty7*#AxCh^C z$$cGU(;?{@PRJQLwym!IkZnY_@NI;kh|MIq8IDSbwlMX4CmR**K<2 zD^pDLda(+<&>t0bW<-(Us#i`$3+M2spF(i8U+y+)dB++azS%k)YCIq3A5nRga!dL~s?v&x(nmdd7QkgqL`i z^-)~tDZ0hG7RmR!od`+EFd5BQ&Z^@z2`IW>2 zhs`mqsF?ma_~8C<;VtQ9FbnR)GEETwW_QXLbB2%^n@ASqSBX)YCt1chA1)2E$if`m z363f!*0Krq+d0Xha8mCeoWN!e*Q`mPN?=5sHD?NJZ<6OYJ`Cuv-jy}%MOw@7V9GX+ z<#s$oE|u~xt9Z%Epp;Zls!@DtnvHo?8MzjgiTl4Ljwr|X!-J}@e;dVBV#*~??Okfb zfL+kuEMKxn^R{a3xgu`AE;*Q2p~A}@t+{69lCVTkT8vP#dTPzljOLb|P`)%%LV0)3 zXTGi=4@1q9O`cRWeHeHwmd{hohx#Tv%9s{oRCPdt_i9jt>W7$)OQvx^VAdi}RNMwD zDa{RABPd7*!^|lHPKmVLqiXQ|?T#LvdxM*oceV+lT$FCTnV~I!)QkkY?5v>0bb*Mg ztGhLxoEG2g_gzkTrmTDD0(Bu4oMZvIvRr-?r>~Gsn}nox^CXNMObb=<@|uSrx@z9u zu>Da?dI2RJVzgL#Zxh@!DG(T~sM7vRt2g5L4$$tCdDY+ltJu^&8f5=>A`sPpq;b@&jw;?YU)-#<1?N zDox<$>6>g5He8K$*tN*A8_vz+#mtU1vf@Z=1a?~ULX4+z9$>0hx%X#IPE*E}=g#M{ zsXNn7OCLjw7KEjR?)hGJr*;)JjOY za%9J_8&psBWrP#KgMsc%FdSU^^YT%-}ldL%?QwQa3BW}5QpiZJv#1BTa8j*hwEu6fi z8|Hs=ZUb3tN|#a3<&TO{(X^GL{xu$NLFV$M-DoTsSfbpqt0@U0urZ{+j>36e>W}}I z&vjk0*fv*hURxbH6Zz)|vjZgoh>V=1p-BE7&ViDO!9goiUV}!$IP)LJS%&LKYdOI` zbgwN&z&*;ah*UbbDSpCPitiXk$vk2-6N;k#eVQ)?>+W{&gsYHW0AeL(HaoZ1+L2U> z_@=TxOR^Z?hJqJmW3H4O3qsA>1|@lA=;L=}`yZH{C|IzD+-dhiuWM6vG*l;Tqk%7z z>$S@vmGZE%AN$@(O@7~e?CIcO`LNuyaWyvuTi`PlxYrSwu0L~`4T7DP^9`CN8^Gz=qJcg!^ z?8hve^jnYVFC0&U$~*(pMSAt)txIy`&IJeols438O*>F`t*5HDGvuTe+$L^IqIHTSzw2gg8eutS@Y+LjD`F*UJT!u4F2Unt?<;(7+@iADP|l`TR8zz=+rsVwpD zA9G48aT94L_!FtE)4_Q?-qp?j(DFVcA0B$5F(SGVE{(YjHmw`rgK{*WKu)gWHq z)KPt49GPDHo}Y=0ot@7TAx3WKvqxdBDe|Y+rkHy1%|;WqMULKz<%UA*sOh!4CHTZ+_-i-I1)@6JEFWA zJ4SNL`}w+o|DDPP?U2CFVK6;jtNa86fl}$=&vz*ha5n-b(>4Mo z6kfY0<4Q!3S10WkfHI|w6^Y!)q$!V$C zISK1qEh!1fVo^5%XINuS!bpw*l2Nm=&Ge`pdEw{TCu=p7aTqQ%m9f-u1}WQR#4J$# zbmK_859|5%xZ)5w;K)pk^5jAWe=tkTE1CBaq}Gnx(BA8pkpY@>^g|nwDn`BJTeJJdwwfC&_m<~4AwgM+jOUqc?J&66UrSBGE zCnW>=2fpQBNqx8w^IrjkV-rq`Uz||un124#n`#K_c$}yHSBXKb{r)(B#?rCAm^2%Z zG7%*eJ3>wpe#x;jW5dT=@a{>to3Yu1>YvS@?*#u*6FTF-a9%k{ruZ&>w|~K^BOmh( z_X>Ll%{5xqDZ%o-d-TW;z0EDg0y1!kzt&vi7vJLXJ>swS#sRrag4ctif9b3?e3yt0 z2T^}S)Fbx~IbtsCZ_d6KnBdm_aDh~OO;o6KhGq70?DO`5uscw|EQUK6uDBvNO;1o% z^gC_k(CCckPKh}#);9W1SRfpDwhF9pK7;goENx&p*=xU3^647uUR$0vXQ@5;ro^vr zdphxmkODCCZ8Arc>j_180c=jGu`V2R_1}A?Z*dqE8qtY`7*g`}S}#ro0-E$GZh!Z) zGJWZ=%UcaGz~nwCIOx57Q>8*f1r4H76H&!@6-TX|9S5jt8LSoC(+K|D4!RJ=Y>OZ6 zG-M)M9ZM-Ab)Ssmb>G0#0V0kT@at@vsP-9dW_zN+B+5qw%+O6-WF#>x_T_L*O6e#$4)&~SzawqcJL4|t znN!qQ$&k?-LH*tRbp+Sw7B<9j!pH{7W^4qJLmUH{@fJ?d9w@eL~cY*NUz zMMaJkV3kQf>VeQ+ztJXlpKh2?3MB-{*GgvK3`5{%F?w~8NRS5k>SWxbfgJQdM4Z>i zb6-m`-5w=xL=k^le=}>3t>qSmtz_;oMyhk`kn2|7@@4GR8(ndc5hZsJ9g~EUnv%Lp z!#w)XQqGx52CP|2?!gd)EZb-*(FU~p*B>bDOg?KmkdpV=-m)E$|I+B6KAv(IEe{xI zV@@#RWBzMbB5m(S+^>xsY>WU|kq@j^gpyz{ljB@mAD~vWkigd9=d>nAT~LLUO_8ss zE5ZC%6VDa0es7Ugiu@{8w@(@lV$I)sxXpwimOA`-IX+TzH%5wr6PNpaE>Gq_=b;UY z&(eAvw5*hf`Qx4d>RI_ImZWyr0prVTB2YkB)m%En;YWF_UK9j_v z7y7J^)coZi+yosQm8!A)zYs}%EzPMpXxw@)8Ntj?Y|2kN*%Z>y)%8)ruC@PUhy}O>Bi|xH$LxGU90`u`K>Pi0s1>b<-LcoV;`& z1=Qxoa>@gi;1lXdqU_8gvQ=BNjhBYd+tn!hpR|INSzcV$%J^dKUfM71Ly)UmGA#G4 zOYI6Y>|1{$UAd!F=*rSqBta#G5aJJt``012DLG5v?mGVyR9DmtR`kk28O$n4IZ1i2 zeq*MQ**x1_%6C>aR0#mbRo7Usl1$vy33%9Wd3mxdtrmgqV~LBsc+~BH46$$a zljQWo2yh15TxrPbfJ5th@no|P0nWq3xAb5Or{`0(6GU)BKrh6uJ?DXH`uwJHj@5W4 ztfBat9W+AHvG>c_?-t!`pD?J{a zqq?t`1D4+B`oilPOU^ZlWX_za20MoZMVdbE9>Z&gJ%?>r=^a5ATV1ljdfmF@N|kd4 z2E#WF!D<_6B(n#RbF;JzOe;#I+}>VkUGhm?yJEEiz(b_l$YDX0qIZno?`+n#g4X24 zFvaRbFpb}T!<4(DMQQClnc-z8QO{c0(MdaM$}HL^QK7w@&K*L4>j9=hrlg6r!wi|e zMRb9sq(KxGx7w^t)9H}?U6rP1`Ykv5jalsj?^SJCT;~)vpOW8`rwa zig&HA`u$8bDE_T_yM`paILgO`NC(Z0Wt3zw?6ayk{=tPTlcGxWq(=@?%^>vj{+qm? zA5&~Y`b%wQ`}4seo$xqfIWmm9vqsPkV3p+y)?sTu)Y*nH-2H*Q7I72zfMs)(7Jl@C z4XBYh2d%9+yWGX3g?qmxK78hJt;IP?rdh6p9k zOKNGaM=N&3)Y3o(@-EQhGCa;nbo8RCFYBKA6}Lc>CdBWP`s8ECiD^(}K2XV{emD>* zwxD#_ePo2h8)GTWpKevr8(MO7zier=C6&=xCK$y+K7W_xjEz++3;&jGokYjPix$w; zmpbWbXs>Y^eiGDeSm6w!j*{SYlFIo;7%Mh95+%~~&e2Qp3`Ay7vNruVVo==0N+T}} zrtXorg!2GEkiaN`Xut{gSb3w0;*63|%W|0!D*k21W5^*=i*vLxe3mh~%)D4uLe^o4 zbF?)90wmAT83slQ@`*$6Vkx+@RFTY=k?@j{08yexWpqbwYlKHHM~2)(L$g%-B&f{G zy6}*Z@eo|feB8c3~UI{&fi^oNaV- zofvT7)@{-p1~J*D+z}$i(uXFpv(cXd2(316b!!kcMDlfKa2V>1Y+wXP@G_?~l}A3j z%|Jd#vR5u^`!K}!Dp`B=Ly^>?8)|Xp+Dxot^ERWq4uGQ6Q!x zujfsvRiUM3s9=EC*6xXYSe0LS5feMB>I{4zQOW2I!@jY`Hn2p|&G_@KmDWU7$s?;H zWN56q3bPUCO)Bs+ccmci=U!|(L1zU}6iwE6O|u#ME^jw+1PU5@2(hh0;8Nh>;FVLXbm`>ocxpq_ zh-^Y}zXF!|hOY5+p@Tj@2caN@RWP zwJ^;leNd?cAM@N>{+~xO#BdJ`B>xtm55@>Y=6xe6MI5z3Q0xpdHOLZ#dgaiFkagwq^PUBX#MMy6Lf`J~-xqOJfYx35pxzG@VB<6oh^>#a^or?|mFf~( zYvNU^+AuKDD6*o8Y6>%-HP-Y~C?gNlo|q_^`q1N@?liwq{Eu>wCUWG>7~(x_L@B(Q z-@6x-^H_ChnNr6b{QgQN8^%o})ZqPkD@&Wg7A68Wpe#x}k>3NCgp;s7)~;nA?yW+0 zU?${j#sEEl0gdP4n|B;Ue@x(&*r@j!=9_5q?8A ztXjARRR`HdF)H>nDk-boVOHzO(6o!);vaQXZ0R+OR!_VL|3=5NkFRTjjA^A_N2p9n zZD?>CDPWc;8oD`jT$HKF%Qz4a0BP&l+fDT33p0(^AE&X!R8zBDx?9we;VNkctgYA| zxGFJAKya?_xbrYyB9Sqhd1fD@yH8LHqsDW-*0p)dc1%uTrTgRhLC>n7SJ+6X8C8h& zImJ7Eq%`zszq)l$xRnNxc6~pKe&k+oePGK+kbuZs-%;mbh~ot_<16JL2dX$antAT_ z$2wMH;T(Ecib?)(!3o@x30e&FuW-9)u%tSbcynQTv zRM{2ygK!ppvX49>_={=fDzOq~8rUB5y{7}Y4ptg^5%3eZB4xm1?6f$zZCh4xnTQl( zO7*C9#9*lWdM~Pvsz`%s%F`8?FdQ)Hzn!X^U>EIPqjor8{S$md98mQ9Jz!UjfIg${ z+p!k`{{p4J5PFA$P2>e|93Qy_zOQgQ7rpUDJhphBGC^Ql}{bow}w>h4P~-) zw^0Jmrv#4y!JF~U3-LGIb*`Raq`J<%cq=~P-F%1>-5kDfFMZe3z`xr(n_~!`tNh6L zZ6I{fkDaZU-ZrvH#AB&LP2Etljl0HD!z3G=ki2wE!ui*orRr6rmXzy~2Z#fks~<*Q z^GdxNBiu!yxX;~#;>(GrUUDa87nWynW$qwd#KFQn!4z#dd^`6XeCVwzodT&w(J};2 z4bGlQrSQdfW4YVbhuUti-P0nJK*H7uM=(x?KJX*R*W}C?b!btH+fC5d!(%MX6H2=_ zHIR_%zYVHiN6ix~smj@i6)IhN&4~43z@#vfT5r0jl~dE&7O-+wrCo595t(-_T8@3G zCNol@kz1zI7%G24pul9Gv4r7!siKA*yiZ88m859|FSM($ckK`CQko}F4g-tT6QGh`!B#zKrjw)&A!G$-DTtHwV&w1z|I*qiEa12uLn)Mh- zgUCfvEP)hLR_?vew)g4Z)cZ0}?5>Xk~cwY#j1N}U(9y=@3 zj_D^3cevqgd%2^ri$A@|no0+gnyjvJ*VV5J5yrlt<0f{tFYO1g0uu)>SwFx5puUwC zoze>@w1Dq5oipb?+RzoTim-%Ow66>C(-I(2pPBK)#s#4$7MNXa$hA44sYS{`>;JN$-H}&X|{5BMh@{ z-6yuL7shDjrhG0iL3@pU9wb_BHT})%wCey7DfAER`e<}9*VESXr$YX%C)aP z{$P2brQWT&%Zo#_vDpdySvuv3plSFk(zB3%{@orf z@5_+a=Ugt%-bDT~BHegPOt9VMDjOs@4zL>tha9!6K6QSpIqoo%LOl{60qpIV7VHKkyUl2}Gpwr>sT#-1^T@V($?-HY`W+0M! zOOErL>@3bN%OkorFj2;`r&=j8wrhWO$^^2KLsvE1ue;^%>0SX8E-VzMemCP1f2`dr zhv49XJd|OTZtZF%X`&Fi{vzJkCss2IFjgmEB#@ASxr$3gdzqr$t!gV)^e*jk{oj@N z7L&6geT$DRxY|SlvPFV?ms5&rqRs`=9};YqI9~gIR)YLXMq?%;aMQrEI$0tUpR1A= zH$`46JQwt@en9!Hb_xH(j|1laQZ$Q|<^MAJPU&t%U$RAa-;|VIfbWMd@*{zrRy$1_ z(3=IU@%Hiwn345@r1hDYZTk_XHCk#mA5pojL35qu#7mj_6u!oxt>s0(1?qvEG66@6P~9s>P`whqEq)o!-#cun4c#AukTEc@6QYUPy5&7LX2PM&q+!~``72gNXm!yu8SDEezBMrpyTT~ zboXkiTwdp3g@1d;xAO-;=8KsO)i{Ws&pNl!Ddz(U4iVT9z3}#5`$*h1z^AM{Vbk>pS=3e-^mTb-xNrDMDFbH`MJ6xFG@_-2Z(6>>};&ud>Pyt zvT21)=b)g zyd*9PcC=N-Mc!#F<%$xQ8k@PRlD4U1T)tk{yf%lp=GAlC=HIVBYsJTI35}t7S3fiL zY4AMJ5HENNZ4r_O2lN$qWD?v5Z!6tr;k*V5@aGBeu%NX_h-k2&1J6#tNKvNam^cA%>dnM8ot6uU7pVLUHJxbd%@lblt$79zGz$n} z>z4zGRY&Fem3*s+K6~U%nGX_=C2J-)*uEH3et!KefIBTU*c3}=e{?j%^;<=V3ei64 zYIxk~)I6g1`*E?%_88Py@%vuRJfS9gUWh9D$dYUt}L3b<{uXFcy~F9Fe%7g zAj5vFX+8>JylFba7wW8q2qClH#`0DRnTPXIvEV-xJsyuQ$DG6zva`H3%i=o3|g-8>Pco$eRiSoIiw zpYENfGa2d#-6bb@K$u}sqej=y1B=w)VYb(w4PwzSlj)(>2H31bX?_#IHVH8LHS;vP z1x41?&q|JH?k~du_xW*`gs@wp31~JM@+({Oz_WkthL)&I?iiugI)qMYzpE>c!ev0> z(^I_%`xy{IA}L1?qQWB+jvClp28tgPT>@;|SFWk;R^9r_DjCQ+xazKtBbBvf=|~Eu z?FsX0$A#d=!c4llYgI#S)im9gN5+{i6*KeJMzG$ES7L3j*;Cwf;;zUlE;0EjGQdqp z>(>;t%~k2EaDb%w_B&l&X`mt3=GV#jj#L-S>0AK(yx=Z8;^)C9Y!DfUffn>O)dmR{ z%Vp-eEdZY=D?)1Qn+;M~s6IUHwc5Q^+D*106udy_?g5n>7A(prG}%NM7s0yBEv+LQd6 z{RNJ?CT1al26Neih0inpBcm_dIR+!oNbnoy4?N< z2coOb5z4mC&VU{NZP~Rh2Jcp7!~EN3az0N!%zjxY+QIF&=u+)>Fp@C)mqpHL*dn$! z6tDAid@$m~9yzgWdgX-Vc)hWpggcw^>WKvOZ?%{nW}?8XqSWa)o4{8+VHH#g9sI=b zJ+!?=EhzKeLEo-+M~D!+`T^d>t6Rw6gpzgQOcpaqj*$Li6aPLH);#B4;PVfds=~UxkjOE(; z-avzNp59|;v*hCGMF<|RJFT(FSA}}hQS<1P()TWKo-j*GL%M>gvHWcvPP>YXNz^pd8T53Cv-RYqCGq+A4IAD$&VoB34ItTM5vT-+?A zv~=&Qx{!IV559FU&Y3JgZ)Aa?n^1SnivuhZoLE6?s)Jh3v#}H7&1|| z6^6Y-5)vcBXpYqw1@3&y^rLa+ozf}+Q>zS3#=J=>v!dgrsf3k8_L1iV>d~5XP0SP@Fo31&`hqx$EKfzsUr9L{{)QcONBe=kJVk0|$0b`NR5}{>9mGqH&<0lzxzpm5bPNf}_ zZ~kuTzi-~XUk;^i5ZW;F7#YwYly8!57-Ch^fW^@ANRl?g?UrvESBmw#8Xh>!H~VBH`(WZ}~%`Wi_Jnx+P>Zngz2Rf~upgrT}WLdk-Yi>1dU2 zn-6gYbEN2)|KbH?F&UqkxHk>K!x#A_xeV@Uvmq&H|9GO&#a(p8p(pnZUYLB0w0)b7dAjr7VSK2$@8zv3vudQ9B( zJu-vJ^cTXR2?4v~=6$+0t8z1%5OPV@tN+BSebDVRcq17>VvhgGAVa2s5}ygaqO&^L zSapQtkiEucO36AYz9H?k_WZS=TJViU>q;M^VetVGdvSIoH0!|H1Q zw=Q@UCX<(6_sWqMhr}mEkoJ95VczMl&#LJ8CE?J`3Q|ch)j(y+37TQ*4-y?|1=7A# zO1Fem1H@2fy5ID!EOx*7aZ<8h=^ieqTW=GUgVwWv;rb+n?aPFM1F4;qR{A9s_Y^ao zQ?0@xj~J!rnsF5t;29R?aeZ^RBH|osu@J=l36 zW%SXG7fo9wI~P8BG@catc+&3fsw@|Ok2fy1U@qKIXmJ6S%ott@RLV&-i)BT^zrA^E z3gVNqV?VmX${bUX8PxaVLUM(%hQ9pSleo@fm%$M+DS}lv`-VC zokl=$^6^QKuCx=mOE3nTtFg+{6MTmorg9qru;@E2l8u%MHFa*CN z+E+&nGZPP~k!iQlKj7jb$5?w?u>T%q<3Oq1e{ zq_nrAAV&3;rrXrw6~OLR_zinVcP&`ZWaysiPt@4vl5~0YEonZI{Z$q zfYDuG4N9i4PTHxqxfY$NcL;b$r!nx@Q>@L?~8VJLBFh#Um_yJKD@mqQvo#}~6C zEUmcyjeNs6=OafDlfwt#UQZ6<|)f8A!m~vU#$0Y0h*N!aA;Zo-+V!FTybiPB;W;0?2g$LRIONT-&uEzorR#@aP4Gf!)w;LiS15iSJCFI$BqNuUobJJ;jg2FW40cl%R$oQ8E^ovKm;_QwB z$?j-}TauP#LbsG*I#vy3pUi``sip^ce>H5AEhHP#Xdy~d>HW_RB_lc7;_{Q_rS+m3 zHQl?9(lQf;AVMIlN5^B*7;q_>tHGqSdRYNxI#`Vy(dPs^%84Aj{M9+~LOW zVSUa%r1W-AV;CmP@_-MoD`1S-rlj?b@zQ3ti;TdS^H>8ja_he` z50@7e;W)#Mo!8W(BU1~Pl&O-Q?Jx2$Q`UBGd>_*pbO~=P5tav%~S2_VM+Pn*g7s)5Whpp4YLfAm;5G#~VI!FV|gP zsW#(IcJnito9}2P^(xKmoMN8FMw9TM5SvJ-WL>vOQO0H0>)r|3rz$QO-89&)z6mYB|=t(zNH45QI z?nWC@n?N;?Y)xN?#z#x0A#ecQOpXU0pfqFx3$Q(z?=GYQS08poC3fXtoyy=={u@^x z@K)K+gRIspGc}8Mau#*(+~QVXSaGGaGS2XknG>&p&?*=@8x*!f~aw_0y?;o4*vb<7&wEt8fqjF=}cBA z(O%t3AE|mFq@N`ktH)&*-=y)3@|94W-oxsjJPABcX0$Y{ND5elX$PLj<-0x##5Z7_ z^_;CmZoDpDnm>^M=O^mWO7M|J5BdIZK0O+spSL#Pfs?jh>rb31+bcS_D{#96mYLv( z>qe4pQ-X~k5_3r3ksJyWaE?YCK0XAxp}QjgV}%>Djc<1NzvyzV{&k2FS{!EHeKWy^ z89yZk;Ni~WiatBR!W2LOhGXUBtlCP|D?WG=p>qwPo*csi(d1@98i3e&ZCO#g$KBjwYWoFpoh zCYNVziWmV3V}#ANLcFz@M7fpPdWIIT0mVPMPE#(o3OaqntArm*hI6+RnqNG}4f41b z8sg|P3KtTvz^g{muH>YCh`J~>0Mo9;Q~kC{F@x3S-LeeZLTIk7rVLH9%DMs?iSqY& z=@@s#W-{29yhEQ`;$4kx014`8?Alsf#$6EC+_*h<8oEIEAnP8;+<=_$o}E6{6)tF% zVlBNFq0(1ifkrzZTQy)%wag_|drU)#o9YqPC~vT?KO+EwE9J{7G|gO0k& zqkq}a0M>-2y1A}UL;tap+zD-vG-`B}*eOY4s~iU&ik6Kj-h<#jNH9>VWe?|~t?NSI zIUgDg?y<#t+Ocr}QL+D#eZHA+l zjY-FHu`WU^5g*9>028R0FE9ts&C~qc193=sJoV6@m__#9v*aq`;@+6IRP8J1q}HD5 z*1hL>e!3a*OolE-dwIGc($gZL#8=-%+tLm=9`${vwv$e#8);dwILG?J^lT$x5~N`mf_ zy-ZT}=J-+@2$FgC@t`J*AK|-&WPEy1PX3Z*n#t$u?e?Zewg>l{V-}7=P~?4sTja0U zr$y>#j-M|(t>4@G(d{>PdiUo`E}3xT6_`IufW`&sx8v*H?Ev=A&>C=>r7IlAl-%r_ z-`9QEh0ONP!OPC~)5*%u*XzmS6#Gq&-}lFer0kCG$KJt1U$G{a52vJ1+NO*cnLQZu zILWzP!sp}H!`|1!4gZ&SCh;I=x6^VS2ftzfG#Y~jbAVlQcCLN8U_^!)K|aI6Lr#|L zqoXL}^z*>Uzz4=YwEO$#1n{rJH_L_|;HiZZeZ(D#B8!WQjk5nJSU#F|(cqB0qEwVpe#*{7g3@Q_XB7V+qZFlC z(P5C1$i#2{WS34hpL`_{sXX0k_@0)#iOL*3f)4jCnw<|ulSCnYge0Mc&q=@dpT)bE zJM$6i?4F zhe(PPG^AtX7w5M}|0kQSeI=7)NPfOCyqp9EbMgT`KHd9Qfwf~#>aogsZHL+H?fZ7B zGuqKdwMF%BEK$zD{TH@#3XN*;5;PHAG-pEUA^JNmFTiC#t!V{!olnOymH0eU=pqTi zAM=+>Gn7l=dI8;drSKNhX;LX@yWP~Gv6=22OgatZ$wcW9BM+J!T~Gp2sHpuwKeP&R zHW)T$o@%_Ce!sA)6tt)dQN={UX4Y*lqnt*%<7Kh_LHct*$r`F%2F1I)aY< zQv@zh=!nJ0Q$*exLxr!xL>CbaUm(-{sFjS5lm8jd$nBcw+- z59V=i`^P2ySMw^kJt`8Zy;g;R4!w_vYX2+vxO6~WA&$cW(uKSO7O}pLZaBPSbv4Q) zR_qp5G{WTcjzL|7Nn$-AilhO-sa}-nI=T%P`vUIq;fje)P>zBo8T*%;${^`z;|U7D zv}+mY6pA5TYiiiY6n}k;U(%Qr294|VDYz-B3dj`%E7__fX)dEq8I}7-zBI0=4oF{Z zc;(SdOnYuP>U(9d$)pyK?YR-mx@3pu|7Hz5Qg#AS!yG+ z?>6=@yskjSLBX!vmOcug7)obdgOoTJ!8@{KkIgJtDkAjCjf6;m$*!IWDxI4tDmLkw zfoM$^24>7+gho0VWe#rSt>KEbwlfrf4Vzt)6>~73y-L@t-<;|>h*Ag##TPPUr_0+V z5+W?;&68lN@W+5;1<`X7o?slRflWG!(zJlXHUT+cf~7P16?l~<8m}3~vuX58Bb7TH zze6$&=#x@-YfUk;3qabII=({MkjgBSC)&?6*Q$-CBSI0}0xjxcbw_muhH!W1SxRz* zrj&@nq8FzH7axC2L33fO82k3JzMAW1qVtpe_tT5<>I)!)vBb?>+slGoK>E$UIsb;( zJWgy+9lr%^;oWbXJ_x;a#+2?(q_dJ_$#q95Qt@YV!Uvt4`#zuCE zF=w+I>wdy-@HT(WXGTYjwR{em87v&73FA-USJ@K`8Ljxy0r(s~F!GeHn&Z*l^Iu-o-s zS9zLjSkNI>JWfZ`x@rB5c_p&XGni0KRvlz2R&RLDJW6v*6Xorxw%7Y)y0TmrUBr5o zZ*A>dW+OC@E#I$We1YFiT6N|WR_OBxsay}{m9=P%YgKOlVzNnD&wh`H$CrOi>Sy-+ zLi51tz9E+SR>*g3gljKDDvK&vCikiluBj1>^Q`zlOj$D(Jn}+bqNkD-SCw=UHYTYa z;_-L9D&kOQpVIz5gJApe9x_joJ{Q{tQ4yodH7p0U^=Ir{CYEJskX?vyjXy!Pu^yVc=rjkwIS0TedV#sXqN*cNS*HiAgxstRX zb9$xWjSUl~y1AMg1!Eo8#swu^r_oG*T@Q4(_4v2I{rZomQdmT7?y5Bsf zGwZ6J7^>_lb6qD}j~02jAcuc|=$=*Q{$l{h~&aZccqv z=pN9W489}Z0?p!Z*#54{w!hSLyddskGSx{-U->bpqBp>k>r>$)Cvx@Wp|#f!=i{#z zy$awYOrglL~m3wOSC=ix z)`%y|OLiGfVG}bn<4zxTr}@7R^5%s(st~Gc;@MhPuRIh>8Y5z!+q7e!#E5r_o~MG^=R$g$Hfvk zQtu@t?uF?bNw^8Kt;&l%TS+~%RNuyR_f3CeKFoNxL6*z+V4{@$W~EFkg>sGSgL3Tv zP6ulOW!QA7eGk^lE`hbNs$Cx+_YsPl1B!LzQ7EsTF3U!KBl3VhzbufstOth^+Nl+r z7R1Wd`mR#ElB?NYZpd(XniM%Ov(Y(K8kElRpfI;aA|O^L!>B*C>HZ1DBlXz|`3U@v z4KUPa0SMm4jy1VA3GP@olDWm|ph;T~VdiULQX&qNi4n{{c-W5oaK-t~8&Q>L2F+}K ze7?_xNV#LCh=CzIf{jM|$>55Keyk>VENq_&4KcWxgV@Z6ZZ#Y^wDg1TC`^YIV0|ur`Qa zMunF_dMMfT_8X1(h+tHEGEo6q1rLr2{+ixyEid!OL7${lj2NVClvv=;PP;0y=m&La zjuFQ3@r{F@27h3+KIbqgMYSN7dX`3(7-w-M2n>P1Zubp=?BaPI5D8 za=?GL+wfcDgH3WvHMNa+Dh;=Fl?~$CRqwIIS+2ba+PN1|YsogYe=kGULals6TgUgn z0#SKVgeLK8gDoXzN3UUA`g7>flP6{r-xpA$)(G4uj5XJ3?#WsV@MhLC9F7T1Jq;i{ znD}Vn+Vi0^lJShRcI{wU5OE{&aOrUg3HRD+=}0zBBc+#+fQs%JAO82~2TwBw!o2GC zJ{iSo4E8zpte|C*QqlW*9CJYpTMdhkCu3bQPZ)IG)=-^CL>B;_MSoU*hSvk7vG@i7i7XPOk(?oq|^%^sIp z*Np$lGgR!os<5nh)*i1%wr8o$ubYq&?fjZ*JLzr4{ntO1%O7bpFMe4da?H>7i7eY% zS+twu$jVonoC;)PDZ|C}YWiG~PvNB%SfZiOmQ^r1^sOc9&R4ufVpq(#yz0nJl$O$^ zt}l-?jO?B`F?!(tyt74$AIMS)Rd}-gvmt^*DPMi6_k=t`tI2%J*s#P1X4F#9w(GH> zTug{HZ$-EjtvlF^T#?I)gQ-uS+fI4N)NCg9LW@G^My+n}{O7VE_Mk~891U}qPGYyw zQ$ljSH=ZTz%6`@AeZ2m9gtRK$`3zAt?sjaxdkbB8LKZAii@foTIok#r!;IWXwY}~% z{K@1@O{9WseM~l*ZRv?Oif-p)DEUNKHJ~e1T^k*X3Q&bHems8tA;T`yvUzB}5b{Z@ z(6SGSew%1d-?a3rwiuoUib`EO#x!zYA^D8`p+S(&f)Vz!y_uMyiM!I(-b(XAM zV4)a*r-4+)_k*a*260B}U3k^2<7WnWJfC=6KC%pHwEURn7x)>Ya2?5aQR;e%_T2uy z%Jr^yyWhXH$ICQFzCu*NQ1nVMs=q)=N6S+9x8Dr>>HjQJ_jZCoS+$i+ZD3|@7_4gU zrf$D_WbI8XVHm7h*5+7N?6|U}L;^1oG z=wc6L!(e>?bFhRD#ly+Z$Nk5zBQ8cSzC&>3q-CWc2nY}e0{jzlF#(Z);9_E7V`1Q8 zU&qF~fs0SfKuSzRM9fY@OTi$(DJ00x$;T^tUtdvFQcH@LPuX5Y%gEHy%2HUt+1tt7 zOCM%wcF_#MyoS?-QHg+X19H&@A%kZ|LV$lje*Zu~MnyqFM1wy_hYKGV2^sO%0snOb z0wOyHG75nT9^nmfQ&lP?G3twP$hFIG5yPj01^B@+68`c!Vm~P z!D)ll1thlTTxh9(NaS!YM@szyGPfC|C4*QTgm@)p;&xa{)0LmcB-q4XKqw4YrnvnAqpD7M zQsSe}wHU@lx(rLp1JqW`j)Wcr(&t6b@3EgIXN$ZX?A-Q=KUY$_^$C0kqyg>?@N)Ry z5eFmA@&H4TUAVfayOU|PDP2HVqzlBjPA?!)MrTbkTwhiuaT*FM2C& zqVfX58oia(XJ2~b)?5)>s;;vW>Ey^i2%KAerX)M3*4L4f@k~jEG&zb}h}_19Z*bQ+ zZwc%MnSdMOzuDCgHlQ{zTSUuw0SQkz=v8AEnTsfyFq;kRFmviX?1D?ct+NZr!W>5t zThRIigjCpqV!cd$f&HB4o<$Tj&8g=FWaa{LEt}?4C*1Uw(eFPi16D!!d6Xae>Ms1f zd9wpMEZzEK+AbiGPiAtq@&h|*&SOvIzp}eeQQYE|&?~!uv@Uj@+PR5rhh~d(%Ecc( z&ID{4zbC>yyntkhu+2FbZH2*S#0m%Sw5{i`YlZPJU*o01ltN=lLR$IQ(glRkX1DxQ z4b$oQ@3DYYkQI{F-9@;*kk$9Sq$-RK&ysUE&fX}Visd;G42-Q1uro1%0yfz1iLNCw ztg^ip@s5mNcW_DLRk-P1xt3Nrwhn*C@eU%q-wy+>688Re8M@g)N*P&Ew>sT&`bH&u zg%d(~Hg1O>K8ON0&TpA+@Td-(FbC}Ho4MC~emuoxFg)@8$%JLaUBwh)?fbtS1zd?p z_gS}#HhMas%b|*2IWaq;cEUq>!frn+Z(t4+9k_9R&m=h}uk*O{q-X5e@FEkwTc4+% z!)G%4(g|Z=v8N_-|CM(g!{ZUWMMj#DdR) z{{rPIUEs6eRp|XoENDdk1o$>d5spb@(JSHmXE10)|H`g8qurq`$sfrME`;0Y8{{vy&AuNM1w~3A4sm&0UFV(@%u+KXhi>k0U;NQbRBl>qDS8Rhu^ojug9u6AO zzZ1D)8#JO<1o-!G(1`w>$W_~*5xpwGzr}+_^lw0}+60a0RSEtr9yFqV19H_SXhg3{ z@Ne;;5&avGt2RL+dR2mdiwBM9-+)}X2^!HWBm8Ru(1`w($CX>45xp|Pza{{U=wEqU zxdj^0D&5mB*D^pb@WzY z0FCHha9q6s8qupW{7VMVi2en~)f=D@y*k6cWB`rmUvL1>0F5XB5dWM4G@^f|0YDuz zq5wera|+Oi{+R{s<&jK3J-%$Wl0gWgy9DmOO8qwcT08;^tC@>s<&jK3J-%$Wl0gWgy9DmOO8qwcT z08{~uC_o^8O9L9w-$(#df<_b|kiVq?jp%PA04hNv3J}QO(tt+vHxdAqpb-TK0h1_~NcfPsQW6kwpB5d|11XhZ=93K~&>fr3U9XrQ1G1(+ykL;(g08c~3O zf<_czpr8>27$|5&0R{>hQGkJhMigkEpb-U_C}>0h1_~NcfPsQW6kwpB5d|11XhZ=9 z3K~&>fr3U9XrQ1G1(+ykL;(g08c~3Of<_czpr8>27$|5&0R{>hQGkJhMigkEpb-U_ zC}>0h1_~NcfPsQW6kwpB5d|11XhZ=93K~&>fr3U9XrQ1G1(+ykL;(g08c~3Of<_cz zpr8>27$|5&0R{>hQGkJhMigkEpb-U_C}>0h1_~NcfPsQW6kwpB5d|3N|5PK|b0n{l z6TcM_%^;Y%9sC&wEIT<3PcG1TFd(wZ zT6+PRW;(in=olCnam&R%ugJN8Ec${7Gv`Az>{sJ2g(M$tO*LTs(U-ZpsdLUy=`!fQX8fxOpD%nKE+!7HP9`oe2QzOBRtb2IB+SFw3?}1Z0&mMg z-CW#Zm#H7X94y_epgi2d!qEQ!amL`_<>G*k&IY~9#m2=2p9{yY@t|h*7?-{9dCB}L z*q|Ko!J2+lRn3gIJ3V=wa}ab=&lDb&r-`?@v^ao-6t?*Xk%cFLtC!4?ocmLJM~Z9k8v54hXe`+N;yNB@yL)$If-QT?U+9qQ%l`miR?D^n>D^nQ^o=7MF=2jx2wu%oauTzRB3w=j5dG z=_cjH`C?O{GrFAq@pWy{&=={?nT=bJo}zrXiIrhIW!n6L85Nfuy)I|nya6k-_}c05 zS*zz}FYEWXgFyd>Np7lKeJs!QrUQKriz|osZBBjWl+7t4r8c z+$;9wCJcggg6noTws4jbM~xj*kz7Q}ctQJ2by$_*+dW%!AH&U}z0JbC=r>A7dyd~; zTd(ZAIKn^Em_dIdvL#x~xg~7Tn3*t=g~j83M4j>_<*owuu~1$WW5=rM8Kx_w;`#ZcP{U64VAN|#7E(mkG- z@Uux8;|H|_HdiWZkD(7#Cav1J;pnm1P>xSeD+#dC9iNC}if6guI;wGA>p*>w6mD|o ztM6y7ef|>~VwMJMG7f3W!N*~A)cRIBPh|zV1iAw)Ijic!``#z%y=7n6Z*=E*x9|7z zCBEU(Nh`Y6uF%anV!34n8Pi8S_9eBul}v&z=Sl2JmL%;R!g>}JsgJBaOb>=v_1%=w zc`Ke)vykOV8S=AjsNIhW=4ar~uJ#t;Q*!-rp&})*@8+;KsyGR$JMmKFZJbE=cV2PI zwiKG$R{Hu}IL&fjDeO@5`X$}3!yX5Y;v7X^M?E1*_lXZ*nVu#a8hOE;&{{y3t|f{) z5o&15%TrxVOeQ`!-8R{ZIol%=bxbtT*!L*yB}a?t+o9Xf7gP&ah!Lf6PpB`~Oo2eb7k5Sr!kFeF-BzLIc`Ww4v z(TW2q^c{^`yfqHZT-(nv-WU|!mRud7GZI^;=6~0>=icNm($8Nd5bfLZQ6O#>ANs;( zfRP-{t>VUNTO6yto64f!UW9TJL_8LE<)&D(K+0ZPa4b1ZtL~bDCY00-ELtUo2xe;;kGi7cIZEfB>Zx(kIk6yYZm{hW@PE`)B8ophsAz3+Dr%D=xT9Y6Qo6` zpHqF*&dKZ3Si>n1@@#^5C14k&5j!iNVg78TdF*35n?U;wONt#$EIIb{=GWF|h(;x| zVr#Y^JGq2kdy1k(?KHhS z7Mq(?Nd?~Iwohia3yL!^YP3zQo_yvW;LoP37pIxct+Fb(eZMLY%1 zfAW*NU+2qUs3MAbs549D4>Bf?B|79ZR0S71vN?kYVs$jU6+D}@+qrvE<-Ojr*Ey&u z$wshut@5yLe`QL}3=0|`PjGE!6NvpvPw%QY=YzI4lbvl+dLALIa8Re!PK%B8Tzh=m zkxT>8PJB0m$Qf5c?+ojN(`}}|+Cf9xGEct2Abp8LV?t--cHac&tNa`c1gms3r9^_( zgK=oDaPP)B~&-@06l{>;>Q=I+RWszkYzQ!S+iqho73toL)Br#Kwl@Ai6OE( z|KWh#Pt|x4VZIviJ1AP=i&ENHR)xAr&($)&-|Ty9TX15o_;KX}4fBWL=g)`k>d+e= zM6t8r1+&md>n9x=>k}B>&TgD?+f`-ZHhw!?(|H;aPH119(yhqBsE zWpt@txq1EY4e=B?-)TwHYYQI!PUP6oqv!n1A4joiIL4hzw7w$j=aEc!|M>Wc$XQRP zJ(}#Wnc$Px#7SS!ymy0d_9NX}MSEaLx@*?sW7wMi|XUJnJwQtc{HwA ztGhX7*yMud2@0Kr#N~1EiWQ+ZC1!V8!f^eB5i=y7?xbDEd|=%wYTYfBq^7RN*JCDQuGm92PA?By^0O3WdRL$})LNyX9eQ<8BF3^}K5h z$wuhLC~3X@?*-B3o|{F6SnXNeXG^aO)ghfy{uvQioSX9C_IqbD zX}Om}mC{%p-n+fL&%_9C4_;%eZ8GnBlFj+ZuKw=bK|@=ovJWgg$11v5m7~yAl}lS) zfpN1$#!}qv87x*ho!(s&DPQ>^Zf;q*szhq~<{CZ|f|pk2r^XB}3|wDUwS2bf-ouRW zhq<`^J9=3tiPO;S*n1^7I4oX6y3F1LsuMoh5pK;k*kwE` zl=kXXxLqVFIf{Af#0tB_lhg#y%2Fp@6(*ADD)mV#WG)B)m`kv}Q`l!t{_-Fead!0i zP<`zXQz&X-d!s*vxtMB-rY!BcOXZoYaO@L}i5+BFw^42ZRh*sLl8GhNx9ILl?`?#T zNU7%}Z%CFZ&0=Mn4-G|SDcNckJtnMl&)skw)38Z%C9a;Sp)lDg7AtOQLq->ROyP8| zjRehWp16kGB#DAZ?&CTlcUHg5;R;@eJ73XW$@MP7^ah#-)iTj6zS@|a_)hmEGdipH zaAzo?GZYq2W*KFcj<1DmKGzFgD$vsRGT1b|rBz<#J)VQCHxN}8E|(Um$-Fo#Fk4(H zqG(^Sx<7B)h7m_2Qj6~|HVM%;R8b+w?tDy9m)EM#8gxSI)P%ed*L>zkS*_)R-jm{y z=5w>5^RBs!VZ`e+0}io-XF0h>>2vb2fnnRMD(AGHn{LuO{l zP`JZ<#Tvdi`Q2W=Z_rQbU?14LZf9Gq=3sT*^YglH>v|3A)1zro>W4G)vvI#ardHrxDSVub<_<q(E&R&kPEG7kqpdggXH@6|yPU4BfPKCSf=;PCPD(EsHBMK0>(Jf@vu6xZ`tMC*E94Hm{$!0}md|n%+R5+x zlz)G15edrxy$_Z~WT zPg6w-)ddk-^&LpfnUdd2F=8Lb?{qwEu6-7_QRy>DYkZ5*7l?ioo*FQ%SqsvpMC6Tyx^|M~dt`MSN{lf^wgah)GqOmPZ5y+JM!<$uM zFFRzvz5YtNc>FOs*ziWHZ%6A*v*M}I$HXfX>K;@dhqJbZdiS2Z+o48NdatjBXrO_J zYV!)xJaLE8SoFgr5_Cj>d}&Mlqm#yc#I?usBYT9Xop|d<3M=Se4I4zhH5739n9O5} zv~y)tdTH4EJZE^}u3=vyht(^uG(|(`Sue5kCN3hev0KR6b=R-&=i7(<&KH>c?hSeV zUpXv$B4jP!Xy4j1CW;TgW~+@Q=#x1UX4qQ0?Gs$CnMZ`6 z6qQ4Ar59nhv(+A-(sdj?Z17@V9{$edhi|s_Kq7D4(|25*&krl;G*MT)2eF&$d|^80 z1jQ%dXsPpEa7H2T`D_fv{hgp%H*HZ;GVDiRKaxd0A4x6mkBzh!<^9z8DWw4US4Typ&pzF2q|m_{&HjLk z4(&VT{skB270c#rV+xT)GCqOT2!-}}wj3XjDgA6nrjQTE&6#o9^$T$6*;*9{ySoCR zv#v@Mp7pf?U5vb*Klg8DEB3Wrm)+S&a@o?H!%CWHl5t1vPTv|85~~$z!|Y|nPYUXp zT~kdmxFts3w8Eu1Kk{slQ_a)Zub+XB(>2hB#4`I+VkCZ$yM>3RS_mi9C=j+ntJ);F zviR`a;93vLSxTYev(tmsZ0e*pTznWxBtM)j`hN~`bUz^FA?e{ngO?8ZP8R(Sp{#jJ zHQDKJ+&TFsr^vb?4s7dti`tutDfCD8Q&_u?tl~B3d9sr4-+7%sXX4fyFtf_SGRpGQ zZ(*K;vqy|xiL~1C2fxzYxh_G=m(J8TySiL2^CoAAoF2c>H+=D>OqQjw(dxqX0n4{G zyX`04ejVk`7fxp*T`>U`h(GL|Gq-wTMs4mAjGTs#TP{+Ha30yrlbwglp13j|s}1FB zzdeI~=1#M;FiY%h%@pqI@8YtzT^4+K{Kh%~XLpiwc^#o&sFB5dRP1Gp z`rOwStTo+QJo4$*(bxQ+IiyH+l=*#Zw->o%-2H&bFEa;uExv$J^3Zjy%=vL_|*4KZf5sT^h1S+PkgMCg^Dg@D9I zR^fc-8TXO#sh*mVeqvK)q~v7%aAosbM>g|U(MjVOS&1pEwkdORiOFLWaU`?N=BgYu z_k@9B*C3##l^S<*-#{m(!ji3IkUmaif z!!w1Yom?WzX5rTSkUoK#pVx+*5S;agwglFPC=U083UO;4(dQqqR10ppThGs?nYTTW zPg5i!Ako@;mifkM%s0uJjO=1O%>m zeK-36(#av>oPn4wvp#9MCo;)z2*ZjfnKgD;JQ}3dx@94t18^{fDXQ6-qg&|&3T(I!b=50#V+SZ?yNXyf)nanQs3Uy?6ps( zSt}`-87ZN*9Ix~@t=u&9G9|jfEWC{3nHGAw z<#gK2gCzy|!u80+9d(03tF6^a9!RB`O7_xf8H?qbt4FaRm<8O zev{?$wh9L8eVDbSl^c|ki;ow6W5&_W(M8S4#0-AB>CZQ4#I4<2m0>Otj`mKD4loBd zC?5vvZ#Ot3CDebrz40sj*R384_?;;z+wV6#xOv!lIsUlgaWQ)F9fB(-Eh`N{K!89H z;Gd9-35Wy)7ZVE`3j-JXIyT-7Tzp~%Qeq+^Vs;u@3I+jAAwhmlK3>uL`ii2GT2j1x z%JwQ+My8flmck0o-cIIT`Y=ngi)IMswd*Mul?VtoAQx>AGI(Yr1o+1vf1HefjEaJY zga&_*9v40^A`0@K4nRO;M@Av!P`QCeAdatUN`)jweK8KXb{Q`MIXzw4n_ygf`CjqU zz1v^`BDm@bmaU9?68M&)zvi4zw&47(TAT*E`ErGmHTVS*015mLAh2a<#7?As z0kPv6xPTDe$;oWA&R#tf+1bb^eb9tL*cM39v-Nq_RAl>jS!Ita_c%e_Ux7(D`_(Nq zx#+wsnZf>y6>IPT5DB;${wH1r{ObN1r6lH3oTrvMo8dwE6fScg|`-_1(utPvcp5$C*LZm~6 zFP*05c}M5@g0w>d%PMRlt@6{lyxP+V%s+mD1+0d^qtapbT7rMy%(?FJb%B2w4;`>! z{zwFWqY0At+NXb+OkDqinQclc{s2%fIvVZTZIykfc z;e+TO2Le@tzcB**6pDbS5GbG!@Du`u@;`~ds}N|S5Ku^gMhXfk&_qEY1)3-*q(Bn| zg%oh2ppXKM6ckdRiGo53G*M7U0VfIyDbPqkAqAQ!D5O9W1%(uFqM(ohjT978poxM) z3N%qrNC77b3MtS?K_La2C@7>r69t77aH61)0*w?DQlN=~LJBldP)GqM3JNLENI@Y5 znkXowKobRp6mX)TkOGYq6jGpxfr69t77aH61)0*w?DQlN=~LJBldP)GqM3JNLENI@Y5nkXowKobRp z6mX)TkOGYq6jGpxfr69t77aH61)0*w?DQlN=~LJBldP)GqM3JNLENI@Y5nkXowKobRp6mX)TkOGYq z6jGpxfr69t77 zaH61)0*w?DQlN=~LJBldP)GqM3JNLENI@Y5nkXowKobRp6mX)TkOGYq6jGpxf_wEaODf_MAV4TqKbddtL z5xl*@6?cKRiaBa|VCDZc2wwTsp(^dBrU{nET^8}*<}V;R2Zw%QapJ(aG`y+e_3-hwZY)vVu!LpFKdE=tm@uQFet0GlBo^M%ngH8 z&E3@PSC6!#i#-ObD$Lc<-Ng*%3WXo4?BZyq26Kbzu_{YSLs`{fUT#oUS$h*pnD~E6 ziT{+c1{kbTUT!jKZYFN9%TO6kC?|YORbgR_-^RM^*5=@1gI<3Bdg$^&adAg4s2&F= z2lOrn2b6=KmkY|t#lsEHC*$Ji?sOUSUo-yIgwGc~4;K>$S0@t}n1h)&2CD?TM-t{? zZ3dHZF@d*bp>8hju*=jBU=EgUR!|;pVPWWhfH-4t@N#j$M`wfH<>cbyg1(#Enbi`1>_&2zh`Thd;cM|aFDww$1{;`P5)~_`@ zaJRR1aCEhHgU?t7PUP|g!C}Ft{rfq)hC;B+Sgw9QOP2czL*a z|5%_`(z=jd^mMiR=FXj6ePionOvh&Ghn;a!LD{0JNZt;W){j0Y#@HWUV5+7|$_Y|u zy(z8QDsS#+jmE?2Ig^&73fT>OnY_Cj%yf=?EftcJ(j<7gPIWFP?JGsT*4C2FF~Az= zbJ!}P5a@q6fy5~K(lF*?59x(W(cA!A`^CkX(!go7(fR4mAM^?5ry@8$E<`c(kWBQ* zgRN&5M?dSHetTQQceaP{EIGiqs7RbMW>_qS^QBqF4wg74&dRcULUB&da$wk-Sk8e( zdpR?P?(;853EsRrflYRSJN4U(u*bnEp<;JRgdR9EBcoY&Fd39wcK`DuXSK)B(eHBuO9VIi9=|3)mUFya6j{n6Y+q#hZf%x{3omeEkWBIfrgz4u_--{^#io9}30 z`3E#V%)IZ*l!Cbwd%bPp1Stq3LE*YAv;bm0 z@W`8Ej9#L3ky7&=>}D;rUdr_P9XYZHb6B(=2#8-*bo8E9aV*;t&y=APNuqr3f0_Eg zX_zJB_1ptx(!y3Q9yOYGn)403U*czW-D1fw1)@>OviY)ubG+>}AFDx2v~4Zps0t)} zMj3O^w&@t0v-mcq=PJ?}JsDVnDB)b3J`@pc)Q0DBp&$05 zdvFj4I8KbeEbBTuC43n<&Lw9iD~9|Ovu2w%MaVzE2zJk&R2@{Lf;_R=na)pbVUCyA z-i~=$uXq0*%>Wrp4DAudda}mP%!a$y=5?gY!6OtV7aYCA`(!t@5Js)VR{Zp1+wUbwGVualFgu0> zhp6$ZVUNBsf(PUhMTNs`1@@tJ@^rj5e%<>Y%--KL3E-vUHn-<6%GKwJ{WRWO*qSkT zIF>2J+3CS!O(j|mmBc7F>`KEaYY;7oRNQ~9QuDkE+xKZ6RC*pFerA^!kBxfibkfH46`o@JvBVwd{NNM_bMu^E%oZSF)Tn86x4&tPJP5 z)%mbJy=k$5Xe)1Wg`Uji*7Ewduhj;3lXU|$zucOru}3j03ef*@VS5zzNM`J(ke;y3 zM56ssgTe)$cR$^l;PUI9sr|2>0s1XB$6yoA{c-oHGCr*7P%&n|X-d-MYAPZwjNiub zUzGQDv{n^E6Omdob8CwVPE`BhIyztU7Q!WLG`O1|ZM3&lARI8%*~H_YRI!Ou*4VDG z$#KV^t)J}aD*<1NQn}zwemC#01s?)5MoTbGG)$V9)^Zrv-jon!9m5tGMjBmzNHj2f z%iIyLIWJ&Zx+zx_aJXLgls6@y>4&Dtr=pH}%SW`^*sCOXrXRCjn8x~BMM_f%L~*PGbJm|w2iqrY6|sF^Ne8@v0`_BQj&XsinQXRMy&YENbQ+xlp% z_cJ)(o%E69pDj`JKPE~=R20=J|MW$^ER9;xkwj2wVK})UIfvluaya`af&+_e}9Xm{B6|CIiD#)*jR zaYTm9hjp1n`!yL$r-O{DYd3YD%XJ&CJJ0WBja78^B^vmWH^3{UiBoaR#e$eh*#4ZaAOYpMd!M#^P*KXzD8b+!A^d1Hc-TF{OK@M*yQO;@#j4>UlL2ni z9lyeSo;snzM~P8exBE3p+2!G6@VK&Hqp0x{GFlSf;^htz>~iGh4%=_VY&)4jDL?yp zm#K!X8qvX~#}q|0-oTgW?O5eLvrn0Ak16j-qt{sfoRg@lLn^f)X^1J8{U%#Nr8BX@ zcS`9^+-_Ak2ZL9grNyjYiv^=L);`ZIb;B!XYmHtyM)niDswCFCsTbJrt<@OwnJ;ph zTG>jBX~EM?0UDU#=%kFF%SmR7=x(8=0KIrngQev|j$Pz%Uz1!&Zurlu>Mn=A>ecWj zUp?;sZG_9AMtd~B7rr6ra0@JycK*^-ba7I0v43E6ez4f&$k^7E7M(&l?KdA! zbwYr`^Y+F=Mh}5n^~uBCg&CP5{!@$NT_YSZYp#yNc*Kj{TLaMvC=B{)hl z^U))yIhbnu9opAB9HFnhr}{ciC78+i<$Zf2`^8R-?aeq-Z*Z@NeUHUiJFE03$%kE! zYL_R&sMr1+k8C6kJM<5rhTNM%yvdZFx==4Bp}rxZD=}G9&DWS>Bo&U!MKJ2W`uNt; z9OA3%wc?*(YvD>CBaEcOs&|-YQVG3&9y83MMSc1C9)pE)J%~jc5-`>ER4M0$=yO^V zDK^|UraQPFwuAFX+N(V=YwMj~Jr9qh#u)m5LvQ*l$5eqw19$g5NruRL2;z#kialHB z4t}y${Im0S!tRJDZ^ca>HewL?VMsAQk5hiwqbw?0--+@V(!H{dMkY#j#?Hy;N^6h0 zyUkJT-4~A&A!brMXc`cwkOR%va<_I+JXm(mExpUK%WYDL^y8`B;q=#@0u(-7$PN1W zyrM*z2iv*sH%qmN@gXQJ*ebNE)yZdD5e)UAeNHsets%*XjO84XID$+&i~S1$ZRv$j z@yhlnE&|N={@ zSGUd|9W;4$@k(sdMzrOaG-(vRr%yBmBHR4QLepOv8uKz`(oG^cJ$ZD;sVc;Qy^B%j zrasPW46$=?wPS{iDf{Du=9PZo@f2@8~gK&lV@bXu(^HVI?o{T_jG4 zagvz5>eo6VunXcJ*Oqn&1!O)bz}<6RmXBD;y-EEfhAZCrN1f+;kzyv&B$frS>Do_r zO$YC@m}AyHiDdMw-Qo<)z>yHC=M0g2IA!yabs@lW(iES_!%wLNwMaG(hFkreAGTpGc7R z?SZP6$!FA}(V52>x9_88d{|YqWcGZm=2NKGh#>TW;(d+L+zGe-!JfaezKrL?Xq|7H zvqodWVIO_!ay3HfUl#;C{ZdQzO^D@w>0UwG+sXTi4SRRCsdRTg;`@eejNY|9`|?V8 z_QrIhMMZ}vCc!$>?i;!FY!|WUc~~Qf6AfcLVs%-p>_}}}-Sv|McRhPijp*v1*fYK( zk4soiOFBb5u~>h6xOL-*n?k>rhO(IE@ChZ$(v6#*!77@arj#_Ti;*Qv^{WNdM2i9G z5Tb2W4A|@B-dHI&3XE ze|XP*!=ZJIbFik46iHf~ zi|zUA4oYd$lItCHr6XPw3G3p5c+c%|akP(P;tNDu7T!C)`C&?!LYg1`#XZsR1CH_S zm7U=R(q~#3&TORp_|*0=Jh>X)u>?Qz75{DFvf{ux8xm0|;pS@+g0cnCkDaD#9P@`{ z#H+7M>l8#Z?(Z>4ZGODfeE(V%d}(WZcpr*%-|5kdSc~%$oV9B;NV@Kj8g%O<2zkBL zwtJQ3su{vPG3SqbmiIh@s?S?xN!rM5M0fUnD4}+f?iVfFnyT01KevOovNL0cwb{(? z737!NTwju=rzjv^`;e~0?#PE%j-1hy<=q;Sx}ev}hnH=~hOJ!|!?w_miS`IN=Xyha zgH{DS>~#P|yK4?bgYgzQnqWZAUH=AGB>(4Vh!64RyU|0WkvXE{(Td0* z-$fzs7&9HPmwoh3LufGL!u-lSJ=e=Th7>p?(1?g0*ASYdMq zKlJGcCoN4++e+x`T59c?MU+-;m?Y^n9E1AI9DGWT+ED?W`htqu=cTsxd$tEl)--a2 zt>@h;{X3!k*6GQMLvd5`UpMJZEHqE*c=X>aI_lGJai9@mXn6WBpYumX5rjsvYjf)#AC3@C5L777xF;l{v?34U-!RALRm4$tx zM62Eph1I`pR?+l{>J}g$yC98?*lw<@)&xcBm5u~-Jd@^dxK=U}-e56_4GT8v3^98v zNUqw5wx%_mAVtI2KpYUzih=lS{wELdW~D`#!l<~#D%NZa@-(Wmk;(S`@NChbc-tGS zWM2|#pDL4^RKK0Yo7+-ca?g7DT{y_A&9&37RJoCJm~j)emc673ZEqn~hP;mOdyamg z=cXHR^q~{d&%J0Q98YBj{obS0?dB1IIW6g_%<>8cRne&a_T{H7Q(A)mi;uUCit79R z#!00mhLjMP0fz1dX_y&u=De}OoOwFEEk&c~SH$QjQeCzT+u%6+ zUH&k4*}~k^?&s+{*~g9vAI>Po%OBYH(kXo8Pb(2FvB|pKMG8MS+@hKc`NOiaj4Lf| zJ18giVet0Uul4Q_^8PU0?_i2x3IGewZ8L$f1zSBJ+nQ3Ve zlk&UKu+MUY8e-oUaV|ooU<>_}A?1YkHG(;fS5i^}t*CfNOuBBn}e-3bNcTCqm^dl~?3Pr@wknSNmy` zYLsC%wJdC_pCbQ&X0NR+LfUQu96vt#&_kGLG3sr(SWp^V`}9bXb+9efD`Y4hNRq6e zCm{>w!MY@bl91d+U!`dQIJOOSbV(j}g8AocuGsG^&OTnJqXu8^KuxUJ`GN!2R3_F( z17QYc28I*b8V(@a$HRQ)A4g6FMB}5eFD7hj+z`XMWLmQQ;}@ch6N-C>Asp{*6J|@& z4*yv`@B-=);-GHODb5yI&3zSr>TU3zRBw&}Cn?oPyfnRxY89wYlMa43aE!|=$vDYu zYoS<8HTS0tx<_?ipZ5lCe5^T2sXt1oj1OS@jUWeTc*u?^#=Xg`(lrii`u>6H=!LhxbJVUn#J z*W2ATvn7RCWQ+Je86QvA(75{A|+-2i$$`f_0Q+Q zzh+#Bge6acd*dCC75T+PQ)eKtB{JNqpFRdN_)Qm|KJSO&Zr)(b8St3;@jOKnWSVDY z?0YVUG)y}>t0rQ@tx(X`lB0R)rFMNL{PvNp-#P z-cHyS#Zlmzu^4o-NB=T5HzMFv%rQ;1H7d_LdV97QT*Xi7zcuQxVBQmdQ@k+#w1=T1 zKkF>EFWu;I_g}^=>OIYIpbJD#U^l7g+3qB;$7+z$Kw!S)HB$URhW&@~2|c4raTHaH zxqp|9)Z+=FZ3Eq0LKf!iW8rt7y}1w%51skhm5?ehExF_ znsH@H?E5IyATea0X{%opJ!3Ws=Zou)cFEV9?>+qblDZofI6aBi+LPbaVa;FKr7c?( zT2zX$4UmUyZ{))F2!{_wWB8)~Kr6i=^A*^%@B)Ec7yc~$sK{;id6ca?ts8xE?!t3h zyXti~8FMHprWsob=t*ve*nP$S2wF52eeTjFI^0hZ@C^cJj{gY`w1kj}kuaG&I*znPa2n|Q5EEc?=U~)|6#Ui;XTUfMN^#ojY}&9Xb{g|s)sgTFCQ-D6ACQ*UMl+btT zsKNF#+|6`Q5A8v`+$l5vAip`3mC@Q8m9Fq0MwGWTz_;}V(r5QeN>z&W?RCzRQ;KJ& zmQ_e!v%}$}slcVFoM$AM-Nc2fp3eQ?(l<}@K1|{x&E;&E9#dRp95j{R^3IfE`Vd#Y z)HfgKIo9Oct0%nH?oDCiMXeAt2T$#&IAr86Q3YJVjFB*F=l(znKYX@Qi!@pHkEI7xo$l(@(RQ!GjaAa{JWfCwex%GfUs)i)LTBA77)el>ZhRAbM!ojixm*lS ze(;HGUm}{?d|u*>U0l*W(6`rZBNONxnC3k*`Fn26NNzPH|4LPVOv+wOGp`f~`-}Jc zH!x*a478sok)bSW#AX{j5T{1N_mus8dG+fcQ%MdwZLGcug8vCi?Pr@~wmw#t!kpPa z=T|T0+*;1F96t~^$U7)*vN!#Hp&ua(;lE*ZM0_o)3mt71WTPSP+f_7es6TkX?IS6) zJ(CmhLf|ycwVB)-%<#tlTXC1gCgjAyv`9QFZ^)uus+VXt^bX12D0b-eb8{oBZ6+kZ zPe8}aS)do&$Z&JMrG+TVwx+R`n+c)z<(74aGe_9Wi557x+k*q*?UNEbUP42v5mC22Hk>o(0EkCo#ZY}(G!z*0*pxlkcJG%XNg`{tl} zHpg8mYVvu>x;P4!BYA4a@dGQm8NV_?Ysu5y{Q75)bBl&z;WPEUrmc*8@f7yDUUmRg zRfu86xniO1M%Jxz!r!R?&NR2ZGF5*%_k^K(yMbylYcm0qBg3DZuOZXH9lpi_t|3puy-1Nt+AuRGS?qU_~k>R35I2) zglBoE$!Oda9oo;Jx9`;JRT{LsIHW7tZLk9ka;T>CE6*JGXYPAW8e#QlOOQC#1e@Y^ zTwkYE4(kW8e&^AF?K0+`OcTm%d;F%=o%LkbK&yxKM>kCUg}-TnLM`sPe1$cKzjRMq z9kbB28&zvki53tN9)8i1)b_e;ZfcO|y{#8&w%x`Z+|v;G>a~i=YpgHxCeh1W89HDL zazz$Dmv7Y8O|cftjXC_GSR8mBO-2;>dP)Cs%etMuP%hH;d*Jsw-z7_%sn$6I8<)nkHHbZ%YVFPq?;jS8uweena3XMLCrNGr8*`u|E^&h>W7aD9;g=^iV%~Qy- z+>BeBr(VBOi@n}J0s~aGegh;+d>-CnZk2jF|KzCv!s;D|+@;kmB*K3_vSF3HTb)3pvl9@LFb2OwW~aD@@$&5t$r+)W@~^yW4+h9Y=mWcJ~;#Useknt zJ;#634Rn$Vanok=tKOc_Mf!W!93ln`m}?82q%waoJi7~ccHq4y*`EAr&yyA0vnllt zR3Y!U+WBhxZ*Dfbg3$cf%gYoX%jtoxd^=aEPCUv&Gc zJaPou->=>{Sd7zCptpbR1YHGRJ*EqPgPgRc?)1yMvp}vp8|-|^-X64i!*+Sn7tt6? ztMpb0f1L48@F(+F8SJgXa}z{-9FLcS$p{lcJDg7vKR6?kfZb-3_hEJy9ASdK%7kE+)w z=NHc8rsQl{7p)$T>NdP8VW~1&%13|Jq&KAjzu%nwX-Fiaqt`0(W+O?MBYU+BAPyfe zTl%@t=v|M>4t0Pd4jp3Q%FfVo(S?j1`X*a@34drSS^q;tS|-lKFW@4*a8^Z9@QZgI z4adllN*e)_^7j5dP9*wjBrL{jPHN=n6-H!RXY8leH>8n7;oBww6 zN4x{)(m%MPbpvPrw??$Y|8|UZpNNqN{lD7AqB3It-Zc)-?1#R?0mKc?Me`)bP_QtI zN_V+sS0Ug&2oAbMlhRs4RF(3fo|fS`uD_p80H5GM`5=K^o~e(MRsNLjqM@z|6AuNx$Z zSnNLO{o!}v{`MhHulxy~J+)u(w6Jm)zT_Qapvw~Zu=GC<4$s3JrTPm%-abnN7H?$( z;>k|;z8O?Z5RWYZW`qrv%Qc7@X&K{qnRfQ(GI`1khu*#&QPWgbRko+cxPNhNLk8nt z(|@$CEcPRRM6VyL)1OA%Q26f7alew~VW68{qkQH;;J06NIRa+k(WB)X4q_3s|J?Gn zea6Z4RD)`b8%5y6eS-D>-y|;izY_od<5m0zUxGx)6ybEwMGz4Yz1NGDGs4x)|B0xC z_&t5W+rt}a=wt8bd{480sH&>i`#C$^69WFFOZYttLIvUPr|*nZ_4f4f_Hy>}elGKi0~z#A`3Ni_JW|oe?|!37fSl z_#WDSy(Mww_V{p2`3fLMBQP(%7!AAWkQ1=9^z58B`S0Pbc0pV^kGQy$I+BCskBF$j zgqVM!`G4R2&*uUM7jV>TOF6A#NwZX9>6}Wrc1_&yQtZ+q)iD_N`o`BQ|1;GWVtl36esZ-xF;YkoxWrkLc8!z={pjLi|8q2x0Rj3*R>i&JjwhI=DJzXuI z{F_RSaq5aJqdK@(@vpb#gvZiS6$p*(v!O0E}aVGvNwQZ<@)({Wa^O!{A zLC0CW^#7>hU&78nP@9z7gWUHD1PB=Oihzp{#z(?8SQmm-TZ$FnS6dK5+%rx-$bw9MxYmWm4zBU#kyb3>Qm}HrKMFl6%V!n!7;EYDo7C~^Uvu@xTwyNnhv<^lRwKe~~ zY7bQv>KiIYqgk~k;;qC~K@pM96vaYHjy;ixQa!VzJ0iYP*)5c=rK#62=JB8?o2uj4 zbz+e1Yps1=f3z}TTg_GEcg`Y#Rp#~tM(H#A~v+UwS%^#Q2 z^N9S2lu7e{gStXnkx*{Vvz4c*5&pUlKl2M-Wkd*beQj;<*S#VNRo24j2xp$ecGUv% zp^1>(!kV6n?LU=gCYyT+segcwlp7+?J79t0gHN%DMgM50N8_TTe8H`vbVakj9Vb3| zYyu8|@tMz%q-lLo&c>m|Ktriz%@YQmt;{HstrcP3 z?{4nWVI5m+V~dSh^VVT{)lLNzG5lS7{u9M2cSGzom(elu5a*u%o{oTcq84kMAVsvt zk1vJ8V6iKI-4by6HV$to@G~?sZ;CZ{s`hqdQrqJ-E2*0KltU-CP9`rnXrBbyKgVa2 zsUq|XJt__8DU%=+w2R}G71SBXv95O_=H=rtkDI)vPTEbanzo&wf&L0;fe#S%N?Xg^ z7*5yw7sKhmGNXcgMcB@6)PiNj|2U_=c7BO~a$L=5-KdOR%>*M0h<)gJ|Uc9 zYQ9iTR3cx{f!AkxaiBGBcxFUx4Cb8NG!^~D+gwG{+L3>*T57AkI665hfiS;tJv_HZ+$zbGMxm6UyHC;#aH}j#ljg? zoz;1g+Iym~)?mmh?NQE!py;($)0gk3jBc^bU%oNy{wr&`zh-{)soQx}qbwiQTgjqFg)Q_+H7}SLK!}(GG&=Fy36i zZ1Nuu!csmtfRcZv!ATkgl%w1~x6JlQIN98}Ws6v)x8||RE9GdR+Va^ZEFk@$)P@#n z_g@BmF}Aw5oi`4H9cl7#7pYWYCyLLEVXRr1J+TB;!qK`#_&mNNYQ9Me;_Qe$ZLxDf z20s#es3>nP4oOkCC}V(1wX!ftAkUeT5ZW%exGc2t!ncX`i9?zZuYvAc4aQu6upUB#a%2s2kNpK7oXRr3#&zgRSadS&d zXbtN`TD6#~jkQ%ZwV{pffXjK8^--Z~O3k}aTqBuW2rp*J%M{6Z?Qz}M>_n9m3LP+| z>pIUcy`^QKO$Bl0Y1imivqGbt11&T=`Tk+pH&6T8N0DbxOTuafA80atPHN4`_f0fV zcLJZM(D+YUlT+bqu6`B^9mF}^A^2|izbrS*C&kSF0ZSt62a%5EeS+7*8K>NShHW?1 z*6#U8fci=8R+h6xo~Qlm+>5K0i?EW5CFIe|y^HZWgQ6Tb_EvUH>!Fl%*;lfBE(Ikz z{N`;Nen*?`u&iqAHZZ3G?Je-F^qkOq#EnD)psxLco-hTiSyn&958X)tP^O9hu#g<| zk?3)$9>oMq7g7_U;FQZ4(09}Tg#t_ntZjHWhn{ak+Wcn#GdRE!QwG@5?%vbF-QQLR zCCmT#9_(ITSX$ELBo~zjg}&^Vx@t>CcROVLsqA@Mnkfn+phv)rux{wMuh>ySQ6=`i^fH`SJZWd{Dk zzdLO5#LbKW1`A8|P3IGY!85uOW}$=|fQ$Cq;q`ho>GB|_Y}!55vaxJ9b0rx>-EH=9 z_=9U&Ucvu}rtW?Q%3720z0{J~bt~Chdcb&j?tdN!i^{`eGdFR6S~ZP6XEdlKF4^va z(B=W$RI1CuSix?xus}-s(x>-iGY){x`ZMh5AoclLuT*ouW(uob0I3#~IcsM?_j4i3 z$0-9Z-U%mAVs$2|oXU$AMLK|&C`=9j?gG)dDm{M%N~n)Z^1}w1{;52%!M4TKWuE~- z=FyX!*0ayrU#2Bn&1V{(3qm6}J=ZM_W;-C(O!TXW@LT*1Ec|ooc{Q){LhkqW^-J3F!B)Mo}4cne60p} zyjD7!nn}Y1X~Y?Rq0HHlV>ZTTwwZaLekxTx!~&a+&|xxcC)$+TMCAZxY_xc8A^9rP z8v2R$QMKG0UC zhxx}X&O8nax?2F3b|Wh@{xV_XP|{}Oz9#dNS@arDqjV^9of)AsD3Te-Ak^0O^DBPb z_w^^j@N78E?<-8pe?Y)3=J_@sY9%X%_yzB`^6YA0EX+#01ph0M@~li?=DT-Po2aZz z>dy)3`|yyKsqNGywIKhV4DJx_ITGbh9}(x7uOcw-LeiLmlBsv<<+DT!`j;U>hIR?Y zo#*~)vW5`DiXej${P3aZiXpPUT6*vnqiX&kj{q~e&NeBMG?rLbOqCdVz>cu~Utyw< zINF*1Mv+1ncJ{@ejLDDy^yORP-q+S$pX3sM98OLBF@oUz{77n9csz6lp%e;5olDPy zTd?MBkzHa67^j~zo_+=ADi@rVtj2%en}yVAqyf!X!QFKSpd!|CsZN8~EGIej@$x|k zT_UttlfKSOi~mZCnkY>3^?u#6-#KL(kT$>(EZ<0m86t0dT6dq6gf$1s7gLO7E3m>9 z9d0CVeo_)}$syg4bHh`h1j!X2?yPzD;6u>z8#%;jvZF*qNS_fE^9PCZ1yFY! z%AxYPQwB9#DHUDFuB^3vT^2oCbivOK3V~{Pa$^OI(yY~J^xAaypr!H5^d4guUjwBJ zpOAMl1|`f6Rj+qTk7)PdmsH2(=HO7WD<*3`gpTE;QjEpBYZDbwL}Hi)i#S9Gy=1Gv zAuagI#A*JY7GlJK#hy(|su}p8ndDoq2DEWL@F)rM3SH^%3^gyM`L5qtFFer_bRIl@ z7#$abjfKWZ*vOK!<9dTBv*BmZV&(jWi5V5y)e1e#Xp_etol$cl%Gky+z?hqlo^IGQ zNqv0SR)@J@?tf8Olk-XbNIeCC5?y;n` zT52JURDz4#2P-*vR@ZRQK}*o$OC#mdVawcKxy3Fo?*xN}J6NAaq&=5^->{{tJtBw= z1LycIB{+3M5;!fMfu66tV8;DH7>ne*9_e)Kw@+Rp+hj zNY){W^#;pwfQe(T`mVl?}QxktB74#K#}vBB$(X8;)OBG07sZzIy`)lLOF&PuaaSm* z6aROf>fx~TzqcemF;-@09{_@tkp*q(Kq_n&*PYJNz*+O6u?ig$VLN6CA*wGquU361 zxQ2;tY;w?HZ@YxwiU5~ks4||wJ)GZ6cqSpI02tg<6i(p)pH1Wc3Qn5&7y9WDH+QE# z@<*3ruW4F&+OX^Ng6dWzywuL1YC#bnr%0YaYz9TThnk73M%rF5bb4ZV=G%4&aTKbF z?-VDlZ_JR3sV^~!ng&o%BaJznu27wo+rmaR-&xmIKc`4By(4P6mCHGqNgGuCW_wj@=%*<0AxGt0eL}=~P ztDRhjIRyuvr2UJRZ>-=E-};H4DM<@l388Nb{EM_u^Z~mc@I=EfqD03jWrgv(?;g=& z#%)AoL6mJ(l%?-bSxv^R$r$mM$n3enN1g%EwH`k=<}cgdj=Eer&t9B+D21nYxZE4; zLa({NL>tP!Y>PdU>MK`QOHJs@MuphoxanfCJ+`t5E==X-+Nr`(A4f)gO;b(+wse>VDjPbG_9_*M;`q*Wstg z+SWHvV`OrKPO<@3&tOUODc23@0sp(HQX^wO(hcxrKur^`@q&3#B`>J_k%1nkUKfh6 zeJf2qL_gIb;1!afw~BAtH#+KHGjMwDFnMYG|%zc4bExQ zfA#ka1Z%~vm%l7~kVai_KK!iL<+^mhMp!*$zctRl91lBGcXBrE&!O5lGN#vKg6Q

    z?*gqHUw%Cu#u3IAJYj>RZ6KbPe zj~9y?(OPn-_+0AQ`ERJtBXT~9k2<2k&jcczx|8yg%RlyuiyVtUvx~bEE<57LjJ34I zZIJENOcFM{Udq+V3kF}c_H%cgefqNK!Q4WU&$8Al-xtK82CKF0W|A;3cV(AX>RCm2 zi~}T|F1ohqQu#->`OedR>?ZkDUt_dt>y@4qn3d}BD!pJ%u3kaLLFLQ#UM+~T!0QcX z8Oj)ap=7WUrJG2XPSNC)1cep8^;hsg`#&iT9-GBfZI?z@rD7{gB?%R&U%U47MzOA4 zFFb?zsGLz{0(4KZh3g)g&DR*M6G&$Re`Gsi%uiPW`qF_bP7#*0D185m%DQ%j2 zFZg|n(2XP+P7Rgn+q!(q5G698loV_rkG$sjcdFlC<1ek{8klxFWBoGfmy1t5$c$FVQ zJHt%PwEQ%!v;K7s<+JA3!abL83b0EOkjfgN!w0^%A>%C)y$o~ zL}Lo*>_B~M*`vTQ&s|r%EtFi(6BYQiZ;+N5_<^Q&6y`!x3F4}2Evt^Gt$1D=^Hwdn zU`oka_QPJt<;f^+RILlH3n;Pdb+0s=z;+_7I zhg-93Urk5!AJF&zfCbW#n?u=I)ZdqhVW9P>Q>F}xQ7Vpu^d_AAwlr^cSxDLZhgi=^ z6T^n>iagzxXKg=euwyIky{&|z?nww&Ut*PPmdodWZ#>c11sJR)5b-7j4TuG%z)m@L zJub5{8hSbid$2hz)F7_yq%kOLj_wiCZ~=BZvZr(S`t?~L4!*1&e4NQT^ z4=6zrg^x^=&i=3$rikqm7S*4MzSM!WQiD=NNhg4648t^x4>|MvyH+a&7IA@~$)omgCci;+v~9i}T+3z*x%mcfLGf0f-&M4IF=`X=_I%MTQ{+Y(P^lWp zRU^KvxXm>V<+5U0Uw~r;-5}MGTB}7r%JC~I{9qanay`uSk>L-aX|XV61LzF6nkQp&O zD(o%LGz^2fPi7E8jLQUre0hdt+F%+06?9pnj@|XyO*=UUJhoh5I`6eILU!0OS&K(r zWT>y#8Wr>A_jE^Gmw#fH(-jZ!>oUcYs=gk8f8|{*`S!1pl36NuZLk!EPv_iYAQ3WM zP%+Xc_E4uer#KhHpOZI9uh#c&0S-pdT_>IbL4+Tjhu`#O5(=r^!t-h>graC&#F0i` z$&{&zS1)hJaX}}lB>%XX&{Yfy4}haMO&Fat^0#?;lZ%!sDcPcACQRMN1(@tJ6}2Jf zB`r*!iA)fvs^5=ey{CNCmTT+Yld9WyqTvj2*9}Rrz^Cjj?p=mLY)}UqZh{yc^IPbG zvT11m+JyapzT;EiU^_4TZRHVrDR-iQ&H)!H@T`o@wxt1rm&}@5F10#Lnzc~g zz=bh~$b;4m1Q%7Fs49r_*lOtwzo2i@TXbbp>LKNPL~K@3;kpbxORvzJIQZDUv+2EE;U)ue=fu60Xyx?X& zcvK&C-6q!FsXNygUG$F!*FLVkHMiB!ABns1>q6LEASnDbgho~XzDo0$i&G6!`%z7J zzl+Lzk4PEOE|-;&p2rM2Vixxdq{@{9iwvPaG!*I7R-|8f$0{ZuYG#_#Bh1}CXaNfw@>VN(fxgnFvll(2NC0_99%(;qsh?=PW zggJ>bir~GlQ0wov#5pG^oca!n5N@mdZA2?-e$Vq3H_-^pPk+(hF=o6>CB2^c7$OOX zTL&a7hwe1EKByO`_2S0_yyPjZkjpaKaBe3KKKCeXv<=+gscj=ZrS~Y(ua`CI({()O zj8rc;ionZl7%fY50B9^Fbm@|){YI#@H=^p zgO1GoLt6(k*LSc!8)@jnORKe1ERNQ-iZ9-jVvS}Yt6uuMK?d2%tO`&Fm|2h)-73kR^f@+m0DOcq@Z6Cm_zSWiTs*ss}Q+Zy>?F(;;G z=Cx5MGQR1Z!`R2>wPhy9E;X)$%ZJuu?_JoaCVm+t0v|qVL6rk>bRLI^Z#{12^MoTN zVpV~B+@9L5Te1R-$_{v3kLXeaR~2%y?Z#+k12okt35s-E(cl=^k3`tFnlMFuS9!wR zbfUO%N$rMTF{};V#pqGfEuAgekt+Maas4h+p7-D$v+ixp08pU^M2#mnC|Dr0CD=Zc zvx9G$P{u`T?7`EIAW+vIcLfh#yR?J^xH{;lrv9S`mXOx=oas^8K(FE%NZOQ|W;v_QWtB91R_Ft&8jnR@gx$+#i@oi@Q zOI{iGQ#P<5X_za^Y_vf70KmlY^e8+*gO^~ZjZ)ohF1JG^P%Fhd4XXJQH3w zcXYr_hUy~XS)uRwqRL71B_eG7@i^$d0JzhJS0TS@$;&JBx^vBbhAcIxTj-8Ha~e)V zJu3*lOsRl7--NE2fEvE3tQh4MyAPVQxxp+8n)bY7o1mu(Ct#w zI3o@^8KD~w>z@CmB`Y(5ld0F&FVWUfg;vu|5b;7O(ULd6-#gB62?M6{B+Za#Bio(8 zRqyuWLlG$KwYNG*45S64yYG(2w_DVhW8+gZ5UKSrkN}w)qm&ea zvzZnAz*Hm$5c;>60Gj(V(I|^Vt^3`&K#J5}K46GRIN@k9xG}Tg;w#ZePSppZ%IZVA zj9^La)~|-h*Y%|v^Dpkbyd|&kI$-5mPGAO=*|Yt$iJh_guVNxpfXDNRAPW^=h=Xh+ zyI_==_q(ieASbWA+KTnG9RcVqwD9x0`KoV6TJzLrBOj{2QN4NSc0=j+OT}NvnOD8K zA!RplsIM>Y6%weCcig!^1@)^0^- ztF(rYcDg^lDEKmiS3kLza7`zVP;ljV$dGpEcC}Wq^m$=V?mJ!k`=9Fx8s~*tpKK~4*xQM>Ism9K#^S? z>-r95&*$E+#Lid^rxGDko!RysJ@YlFG_k z5KKSNiH7N0TX;L-6(8TXU^!c`D=E-tI8eGGJU&kWP!_ZNL+B9Y@mH$7w-6XJNEuNp ztRUnY_QY8y?n}k$uEA3Up!%ukY@8AeArFsaEh5aw1>SH0NKha#ltLPgHZe*31YEnA z?HHS4|C&rNe^c3IPE?L(ZVesP)i~h6F&4vlNG@5fw?aaa26Hk>+M6$bW%z2~PVm#u z8})`cOQZcBJj+LfdKh}`J)_DF`>g$(O8LFRFTS1`a+-R@sUBGCC*X0ziE&9gs`SkG zMP6tD4z$V#L3(u`DlD@V6*|d1%Z|_eNj_C&zieuCPtmw+!1yOyg` zY%_S5ccS=Os)f3su^J%7Vs4$Jz&omgCk6TYXnDWde(gg*_`daSEgNs3s3dyn^(}ow zuWjdh8r9bCh7V5T#)qRB@XIQx%ai7aSOgPe8&d?;!TZLT!k?;olZt)*8QjjcYf!yG z_O^+z!#`oyd;KcAT(nps=lZjvz?q$*m9NPd*H_kan3ca?TZ(x76D8BUWExho4KfZK zc(XIg*$*pC>_jOZrK2RrB%W}w85oh2I0b;1a!?C$+`KdQ>DR*yA@j{SkXdKPF^51a zW9S{A5(QL1*Da0#qVMwfg5X-v5V7i#ii!*8jfp*L5>C0n+Xd_|z^0{4x0Y9|_27-b zM$gzUvOmER>*9bg1^M=131C1R6>IL3Kl=apArDB6%YpH{U{sy_yi^6W=KU-8x6E^k zX_I^!ccp*QR%OVCm3MlKOIc)lTLIflyeh4x3iXW(a%HN9GekJHlEbsZE zh`bW03_H2=m4%tl+zoj*8@lz!ty89vh_5l|v}@VgWR*-%9f~&*{Fn=L+|!A@KWdRX z%-WgYU%hgsEx&M7>U3;Tl;{5vveH7FjovIBt2!x_S6~MgeG#-&V22sra~5*kI*Z=(K4a;F^oLIW)Q*mAJL^e1uhICk;>s1STZm_slG5*`}>l zWAqY%e1o9pXTDeQZ#I1p?cNK$T+9ZdtUm9bO%UxvJ?5!@Q|qPIHqFhOGJ|!7_Hnnc zl*^$V?zMWw#YRIwi0(L7S>Ji>@r7PLcf0pjDZwR2mLjuxq zmd(|iuhRRA&Q?CIpMPwu-RLlMdR6!S9iI1=rEr49KkS!he%Dk?rDKN4&t9o%V4L8d zU2-nT1BJK)>8nYlY`XXQRfDpp`ASJ<;#m+~z85OINQK9KtjrBaH4&(3!})KR(!|gd zZ?qmN+?5j1i3jXNqO#?h%7{Ag&;TW3myJe#jz(3yVn&EkEhhVmmexDJ-R+JFN*`bg z)}1~>k=kVCtP_TV#_Aw2XnB{#6~n`lk-n+dkJLP5u~VOhh7I(ru$X%mPfw&_uK)IM z#+Ss$_7ZV&=eHtvIs?oE6+#TGdN)-_S~I#7G;Q9*kIml`CRUScAPDIlXN7X8$;;+j zlt*!KS?3JljMnSV>1ZWG!uqj?E<7?RdK>@H)6k5c#@IY(nJl5?p(TM!IGLz01EQx4 zUQep$&IM=eIt`4SQH14O{8lLC0fA}OWk_^Bcw3p^@$FH+UOuJsGog5qQ_sWOXvdby z!}4|VzJ_pPHMGbzEpQe0PjLHJlO8V-X{rt^!Nzvz>cHULLs72DuIuBjhU$vSd^ z9>0 z=zf!BK3)T~h5ibj)rz3$>JxT>Bk(HmK32BPIJSz`2^5yBkNPkoH`0Rca6z6>@^xZS zX$wE14A4&mWe^h=K_Mo1Soq{UeeFIP6A~*L9|IJ5;qq7wjf5zZRmwuT<`N3r6m6;v zsqJS>gVgBGJtkaw4{K4%d#C>LU~~QMUbXU2iV9u$p?Ce#IBcV7`v7o=tyJi41MEC| z>9woHE(o@$Xv!~|z3M69s${_`vN(~pp+E4&tx?CV-q^TR53zBsjQ^x`bKD3PFdNj$ zt|J>g)eTf*{5;??`>~(I@R%NzL-2Y3<_FZT&GKOX%lQv`XwsQZ@Vjm265zOERz@GT z13BGsK0HgU9ob3-tHolG2>_fW}kX( zB&~Tt+QOv^o96Hwc+!&S#D^xUR{O`6feK(xz1pZAQzx-&v{Xouo0%1FU*}0gdTShQ z6EVjDGd>#KHT~ ze~fr6cZU`0JRCeZrsGn#M=&}`ZRiTsc?Llto} zz9`0PIVbnitk|D+a-R-@Yby2<&&ZP4jFPtiDll-5k>8@bB|IM0oo zl*e9A$P1MS;jGn-d^^dEm8E9lc~T;uTGrl@S=OKgsoM^ku1!Ol)9nJ7CZSpl9!6*Q zIseo(*p0yp27)ghgBf=9S|@U94(lu0w42?sTM{GCsLKkZaA2)2wefL{2ZmhnMaHT+ z{inf-d_ZS)i49GX4jTs-c&K^U$kwDRX1AYy$bhgiC|QZ`o8ts%nQEtDAg&2nry=BJ zA^3(hnweQ3*YZXLWk3L;SGFU0P7qs>Xz&4eft#ON2Jkz{QDo+6%=o@Fqd}_kAU7u- zl{2t)gM;P}EW!sZANE$(+qnz#F-luhBZ2|BR{KTnDPycJN91cnYQuyBMnUMjhqEW4 zxuUJ=+LHupnS~Du4lni1p$~bI@Ro8fn(ohpUp2VQ-EjA03I6srAhH5UH^_IZg`5S+ zmm{2zqRR7me+;Sf1EQ+Vo|!A8G&V(Z9(Glr?@N~jkU##sAw`+|PyB-tImS^0Rq+QU z0zu|N1N#6G9u16iA#B9R@523S$*4XiFW#<_?m4yS3fHt#SJJfMT)|5FGXgb076(Ws z0Kr1Qg|B&(IFDlHF*hN38BCEcS-r#5ie-etVE22I$Ga40$<_fTACnpXM%VAe?a)rN zI1}||3jiw4leX$nH+7Ke7)=VfG|10fS1YaEo)fm&d8CBW#hXsc2w(jDieYD?K6a)p zn>0Xn$Hv3uYn(h8ss`u_t(JrY0#g7kr+XOl!{?RKDIBPuu3GqOaYZNo5h2Ud7pt@y zW`7-0xtLrC3SLT82&t>r;o&*lpulR`f%*OxsxAw`Foefq3A?P|CeEd#ES0G~M~i>EI;G46-)@3t zcLzDcx(5!+=if&3V9+h5Z4vBEE~bt;#EmYtReX z(moac-zh|Fj1P$es=}X+6#?2dLB*+R3BRbvuj}pRjZIbPhlijLiIFZE&6b1Q!@?Uy zdt6tllZPW5cSPAg;a)4<<(j-7pee$M=3r2j+0gbMx7IUs2S-00P&CSJJABqhHXN)c$ zaQ|_C74Rd()=KYLg&$gi)>q$rkhvLs_2wU|tF9o2iipwY`KyCleFEmRwyI!AOo*>K4{W9jGVoS~rBov}#|Xz7i^j#1hm!{uAL1w*`| zvY;35T6nP>Em)HCT+14fIA7^y9bq$qrj?M_D5WIMs`(){a<)ozhgo-MWn3ljaa&Wz z5`jq%zohE}^y~YJBHaWR-O@BiV6sxtgW4${fys|)Hhdf*(e8M@cfrAB9nkaYA5|H? zy)A6PEksdWNGQa>)tR5payOr($eAr(T}9T0gSa&$^-$=YVxy?}KN7&G+Sor8&4wz` zlgIoDmJ@$i%3I#o3BSqw^hoVj<(zUy`nLa!6v@%wbAqQNIj2u$o-=?fA%-)5 zIAOnF*T!IFU9a;2l#rtc15D_LYQNy~S3Qd`hWQZYU}{)GCqAk?50i8k$SEM4&d}et zcB=XRC_3+Ws{cQV+dF#{+4pj@Eox zX-Jv5N=7I|zx(_9{`DD;*L}avd7ks(FJAQ?Hle9_KwBmlOvhVt%pT)nX5*|7H*WHJ z;8siatL`DqNLrjAL$RO?oznBQ%u-?}0sLMVnUfD&c8 zD*}^rCODrfT%Bd_6Er)2(XLztOcA(q{lFu~UCg01*)a{s4=t+Anu)=GNoDMAKw)W# zJDwd*+=G4{*&7z@GpuVC4s_QdxO)VlKR)`^V30V$$ppAy?kk=QSQef&56+20j34ru z&;>i)^`vt%LYO%i9dpj`Da*n9h21=W02Mr76ZmsgR!KFF?~#pss!Qf^*^f@>?46sfc-d+3kfo)2HO{u4q! zQGh_VOFBJ@TB@?)KRhteK(sZRF&Jp4A#a-+bFtkN2kbLMLjN;kRRt#hsDF0f!Nn(8 z_I79^nm)8w^H5N%&o0QdH46ruexPBB?pUH}{P5;h7|cv? zawoO}GsNd1pXtCfz%Atj>x4#YTOb6>-k8?`qmZN#+A;Fp?9hL373LsX1N7_!!T?TZ zJ`NLUR#ML`F;H`xfFT|H*IseYaRSyx9~WoJm$a|Y-x|kd-3};o3~v$zoPD}zdcCbY ztfcoNDY;Gm$FDE(Q5ZKSS$IPB=9X|3r^~c?gMzp~v&X!>(U82B`)ZRUO>_BUKvgIy zAZfI*p^Fq?2B=HZXCF+z5~Om)2YXs+34AHjSmmak`X_Yo=l2wTsiz=x<9Vo)L#V53 ztwYCMbrz83ddK~BmeXSNfENkAWR7U1 zHz4`0Rw&9p8GiyF`*oW@#Nl0zKVMHGXWoVNSvir46ly*Kr*>)*N@iN0Km(V-_#(SN zttHxuYMvAUY`!pXC;Y6e*>?BY&zSz@m(KlP7r~43Oi}TvPx(EKq%%94x=Q%Xe`2X6 zQmeunM(?zfDrC?I2(q0!wTF~i8eqKbBt=ybTLEf(aH2 ziWT=OR^BGw<7+N@H?vZs>!xvc-4XoLA?D5QpovE76gz@(YyK0X(ZsmdWW{n>w*TKj z(3?B``+_jGT9lqyR3?hdPPz#+sc%H~uBX_~+-&}2CkqWpf&iSXt2Nd6T~Mbj^v~0f zVO~rAEgIa257iLBRLg#PQus5G2f+}dtVhCXA$jxK*1Dlwu)vY4-)M_JX86x8O?UWy zyRF7exNPHW;7SVLbabVQ?OvKL)?*I((1|rAJRc^m#cqTX1>WH|1Bw$g+|9$$1G%-l z95zqpZCqd&O7CXK-UJbNN58&&497Z1m$ZQYxvtgv{2R}$gWNXSUG?6 z-cEPaua;~p6rEHdr+8kIKTkYhrC)Z%mIB5PJ{huNXQhfHrf3-qquH+2y<%_zSD=9a z5%w5BY2@TW;DF!o|4H2YVb$IX#HZqhXfXqHsuL-RTn>NLm5K5Onj>;@@)MYyNSj}s z>^-YVp*Bc0xAy4QXvCRODJ4ZajQQ5~BMpG+tYKi*Eikl=Y?~wOYJ9+f%WTlbY+d3 zPi!nqQwKnyXNZnWY@qyLE#JapCGWko@)u%@Qfk=0(^YR}B1|i9DHX6)o6Lo*L*GiF zJ}*LLnz(syA*Bak(1$=KUm(${*<>9xQ8t5Gx(ZeFq?w4g6RM(TeN=bCM7I4Zli_@w zc3Ks;djqCcizNcg5j*C^3Ewaj?ji2E;DNAe$Sr3VEln5dk0)C$qMI2dH|*(F=Jp-|8F0mm{F;_kFT&lV!(4T!vkXY z<>X5_U1Y%E;bMZm>$C7^gxL0P1*e9;Zb29B@s1WFDKazv;exj<_us5G8I_RLWuTeD z^V?T>xSwPjG&H}OXRY?5#rc^ov&50KYtv}Vqfbyze^O3@{-`f20gz3x)}W?C5*Jfy z<7k!UR|x~-6@Ek6@<-!LH2*!O1nFu#FQN5R>&Pm|gt6dShLbhbdQo=8I;vB12%SmT zuOpv*Z7zw#0kijF9s?xq`e5 z(YlY?!1FV2V=Fn{ZZ>s~@YwUx6w`sGVoAIU_&e;y$r`^#An+c{DoS2)%0W^`>I9;b z3|Bo0EF!EFFzEPZ6h~`I80#o2B5gctng|atKaqWkjUFE-rCALsA_KMVqa#7$yR=Jy z0{%%xMAg7``l-<=e)7K(4S&u$P7mRm_upq5eg;#~B3|2rSKik0_R(G{nF>ZcTo?At z-JGYRH%79u8X84*NB40fHlAYjDoO=+o?UtwukAQ{`GK+u;95sRuf5gh6r>hJvb*3d zOpQ;}TfSkU2ilfHzLKegx(#b+R*|}w$F3de-jHb#7YyBoT&(?ae;V+&qWXes>u%^h zFsU7T$=vu?O7vy>15vFh@x?U4y8^6~qo%0;rVMi_m6X^~f?ksoaaZl^6ip!zPup1}NUAp>X#|Cf%fd7qcgy|jfO711mP znWsIhD`Z>pF90Lkixp!~b=wm2eL2HxC!!)R-&d6ox1RQ6Jw~LMqG=w;oZ)#&uCAAU zj$dD8&ns^QpdCrEsQI)pw1kbR&g;zV_BIv%$xU;M@#(a(aT9x_R*@yBwC&fdN=q2m z5DG#aWGE(Pwk903Dg0EMW1)#dPJ*{@cjpQ#V&2XA!w*Ux@}}*KuQmSVcQ>uKZOA&1 zj>eSeRYsVz@m?vhB0(qc&X06Q;}@h=-eQdJ2Eh^=x5!)gJ%yp)DMk(kXDT~3bNx8Y zp?cc|mWfAhYT%Asg#bmNhD^tqK8H@1AWu-cc~wS+g(fTs#yyXx+m#4|>9?*u>59~RkutUPXo~7_a$I5bObWr$1NqLP7=WQJ zCP*|@VY>rQhhJkhcXMEC@s={+o5wq&G2FJEsn3SfA~~sOVC%?n!HzLTb2-v%Ift)#q&fnEZYQG~t2RG^?Vg>uCJ*3?0l z@~%Z$z=|M+>AF_K-=8t_y_xzhcO6~H^&$9|RipQo?s?pW*#ro6FT@#jy#F)R=-HOJ zb@uA`ox29T4}IRjQx4R0{>!$}M8FIYtv4+)Z3O%bZweW!nRA?noF5B(#}=+IknRymj3<6+u*othut@pzv)#! z|0_TGS;!RQiPUeV3cQojQcgL>VsS2=s*Cb9@ev?EYCGr(K^xLB#si7s3ct9Hpmy-Y zP2$G_=0Vw|v_#5XMn_WcR2Y+XNp?~z!>CNmN!VDkU4RJ!l*$!S_^*etG_o>pQ${ex z7;y%XP`Zsozcb?F#aks(dox@QTDsrgaB;qCB<#jVr>$e+N=m@$8^Orb{L!_23!cKC z$22cS)*_2P0<{K&wEB4%UI9ms4HLncR(OJczn97e`V<&4AoZAt^`CMq9^LXbnwEPD zc&Ntj8zNe8TKWgSinkjXu`)IQ+^hUF8f*QL_ZdU(h23bO34%N6GCRw=Uxv_?WQ9Ek zrzY=dnXt@LQ^;2;@0zMw@z@#G*#h~64zF2jWNznuJwV^^)w=MWZ91B33p zc+*``wnycbYuwPKt0)g(0({N_k(O74bS-0YMKfkJ>AEqXN$tGQ;jR_L9vv{a7dr%d zG|$&IVpXo}PB)9@yTw?+n-~1dbYeQ{ICQ+VTh^VsOv=K9F$zqE2C8? zOUkp+@i)997*3?oyZh!2e+75aJwI7qYEX~ayi4)#<#}RLaZ!C%T*il04=qI{OQCei z!3|dvmohECkWBKt+1acF@0*cZPpDoEy0Q`8-^$Qj)GArt+wI%KI*CZfJ@WSLkLBU} zh;MSJ6#JYF&XsUk%`7Py=`Yt#2{c{KD{+MX`Xb8pXTbRJU-Jv;2)1`vq-vy{i$e5! zo4vw^(zl^NJB3kD52W44x$ z0OyZOzllRczA5z_Y>c@p@c;@pG-Y-3BN8Q4N;&Ot&Pb9ttpEkUu_qg& zmK;*yvyU1x3D@|E4dX9EeltD$G~GFe3n1D;bg?f|7LH&817SCdVq^YkP#gHcl!y5~ zCG2yyuz9^xV|9Mj}V@fA*E?0^dTWaONRPCLJ!50y>Wl8s~rNB=unsvslnIUma zA|GHYoD@|;rpkG`ZoW^ry_~xt?4?~iRk}Q=0-d=>Qsa9&#jhhzS(P5PL;|KX%j<&v z7R;L&n#E{QbW#a8QUo|cZn1{Y+c3~VxM3tAVf5>vt~_*xdh8yVkb$C`gXy(8c1Z%b zi^#u-;yH@H)}@wivynsk_ATZNOMTmia-v+txchv)Grwj(+G2-^;%C8|EioC9@3E2M}%Ia^c?JG5UlYTy7Fa?%l#y7q`_Oba0GDTFD zJS8MG*}~lHaG3$cj+#*Gg*k7Tjg~i->ABik&_*NoSt3N=r#^+|gHVut%WYMYX7YrQ zPmKy;n7yLqzTnxbA40w#>`#4Qeh$4)4j+PN=K(#D=Gf@_CX0IOZem*bl~#WgILsQO zqx#9er*Cd{-L(3>THhj6_15y7<99S(55HxzD>m`e^7X&Ois}z0c7EIJu)8y^f$|#X zPyTddtPjWk4Ho93y~3;Sc4vsgM}>{I&{bup4NI&~n8c1s%b!z2v4j;T*lDS$D=8V9 zD3bv1+Sq4qr^=jFqZHpOUN8d^J3`3u38X7Vk*FD&^zaYfOrm~)Q%HXQ)BKQVG5PJ& z_b0R%*o=5v0AryEO6qDwYky27oh2Z2H$Q&9z%V#HKja_VU?MOH`@`@UxeIZsZTL}k zI9W8~x7b$ALUk%KuPfAbtYwJDNDH`rJNL9{V^u(c&)A2(RQ7*?_;nU|u1Jm_HC&r@ z)ns?t8DxcseG{$e*~16ho>*CLj2sG?fSkVofRvi9pBpb{PHK__BxS&7R_4vZFV&q* z(RWV#(5A!;E1HM>wcVZE{QSTP6O)*sSOyGOfN&i*sUUw&XgORvwW4mkeu9Ri`?l00 zlKgq3%V`JBJ6E4Q*~-R_t)=_0G!kBw{7fyQ+o)y!&7z{zR821~i5wE}$4?#(H*x)# zKj4Wo-xJ5QjFMa3N(rcHft~2DizXdZkb+1CqAUjfy z4%w+-zJ4QvbJxpkh5$AQlJIfTSHK?C_&on{81ScPvSGvgUmdcIR)_?aZwPq(_ii!c zx&&((;YHYPk`)kdInmnlIUM*|h|cHxdFPBqFFxe>>o`IBUcjxoZ2ajU4{xR1t@EV& za^z`p5^qilmhOrq43_)fE8E2Ezbww>r5r@y%gr%0yGe6f1L(EuOemrYJFKzJpV z19bl8Q$}_7UIzb}nbi=TZHseRtCZ61bmn2$uN?L*aj{H10F4H=qwaJ$+j~d_a(yg% zLX+zux$H_Ioe!a!#J~qA#^R8tI@EMSm}Dx z3@>55v(}tndD^`+J>J|T@momJO+_G;2%_!+-j1XKPz4x2Dl1L-(Bt|R|h5=)ZX z&~f_h#=CKa-Dmg40WVseq9D+`PI8;13>)mj`LDPKX;#my1I9ekV=)uXgxhVWuwaYigm11Z|Mwd8AE<>hBi* z+^z&T(jg>{17_~h#$dp@ie13h_jrQ^@K05#TF-*nB+R>xDA3}Z6v%Z@^n^o+C$Y&` zrm|Y&b1Mk?Jc`V+3U-T`I5hesfg!eQfqAOS4@lQa*@*TL$AYC~gHvf!f1t#RQX;lip^ zA-n>}$rMeI$G>xPb++W~RdqaEvuj}G&a1aUcb-?Jl>A7oUd2f9{@Jom7A~wIGz}9; zxOVbgjZ&&|&WcFDXBR$ zbL({9F|?TOqb)O%5nGxNj50jzO0HJp+mUY>*^Rk1M90Qc9T9_3cl=7G&GfW-%JLns zgj{8ZHWk>_@UmJj9(Ahw{0Jg)2NX5G->v;OM33b;dz9e&m1;1E2y9BpH6=42-Hl3} zmrq6o^^^IIbA5jd$tIHfXmCkza>@z@3ik74CbAj>HW^(|22i!E$lukuQTO%hulZhk zJ7a6C_YOo4WULncw@*?2r#|6z(AC}IEdX5Hzma^fFEb}lEjF%v+xuW`{GmPg=!S$5 zdz#_p#Gz_6b=ru-h!2QZz2#|+HS)+;-u$9t1BVbYdBn)}lfKoaj*{h%*>*BRCam=V zg$@HwAak^nW7l~11Tg}Yk}~SdRO6)dQRK7qVF4jkqEeKulnRn`{3Q9cH89*7b;a&Z z&=PMN%Iyyxr_VaV|2k>QVIXNQ9ESJ^jJeb_eKEAU+tluOoMi#Cw->g(u-w?L8F5d& z2B&#^gYA;4Bf+!q5D>&BSi#>MU7Vm7V*}3=xBhFMVZqE326n+>NG+uom^|P<<~=CA{8(4F+1KP-DB%B*fYPiZY?2(~kMr6unf`ai_ek@sYH zim!rbU9?8`dT{Gsk!Y}Ll*%&acRPonGqPLFD;&N^LbXP;7(#*`$FlsGv-L=N7p1YN ziWkzN^xdE=Seu^2XpB*uGto{(`xWh_%HP{^;{{V;{Jl#jN7w$?a!2xSD1>1&2(W5YR8{`y!X%nAY0m%t&EZ8E!K-oq;e>C#_%&MI`1;l!d2Xd`=ZBK@S z=x5#XpBUYLlE%J`iSs~RXr8mNPDP*?lMPE*yH};>rP+MV>9N9R8EI$l7p}I^%_r9} z5=lei#bC(oZq^LQQ}0815S7Bys-$Zl2Alr{zq}LDoq5w`iO0!=U~l2CeM_VgpU`a* zMtlX6$yLg3^sZ*jfU$p)1i~lbL$FyLo&7;$`$%fqSh#Yb#L-&EFL!)%4Z39_I{GZ> z6Md$F?v7*FLG+w!O_NOs_6B2t!-IhfvXy4;ixg{Vevnx~WaMRVV%F7qM`Co_3AaciLl`r(Mx z24&>vZ#b8A%go{}mzFN{T6(&SXx&fycP3en9Q{t?Xox)pzMTh-dd(vc1`VXl_K1!8 zPo6alGtkN|Gb5#1rX6L2ql1vzlZ%pCaA75}{pud7`3V}KtdX>3Qc6=-RW0xIk-7!& zEv*pR{lWxZ37M({-_r(e71|))U`kTRUVT1QU#3nb|6$_Fj!7cA;<(Fg^)76=tbSco zMb{7}r#4|5^6O_+Ny8epRu`N>kWPcxK1^$QSvBIW;0ARxTmhavYX7~RNIZQ3dI;5l zSHVsy1R}G~`NZtnbN?;+%0I_pfz4V_2TFk4MoJzct3ze$JdJ`y3?%s{)MmdFRPmc=brBJ~@(ZFBnX{NnpZROC^RD!- zp`68Id>odEo@0e9FovvmdJKLjMj8G!%sAx6L$;uupl?Lt{IWEqgrUdK7S3`QelA{u zs>flUdbgWLyXl-3lVfBlVC55D3`mcc{GZ<0Q}+WJU`Y1GU7)q&h268il^+aQ<$|J& zdL5X$x7!^7c<(uf$lLbewfmnqU`i*4KVlHnSqWqMmOSz=$)}ogG_zk$2@o}mYARXY~27e zTSCJPHH#8SEO~$KkB)ZBThe)2kC~c@@orw0aIyIlsO*Zh6jE^i8-F$IY&vAo_xrxG z$2c%NhFlEMgFjCiG1X@Vxz&3vp?_YQE z6T;Z3JLPevaB@P?e_jyfHih8#ptFr*Sq|`_pQclNtn$wwAOrAa1$S@!s6jq-A7u3{6@`^BQoz&{zmZe z9Zng?y*4S0D-$+CrH&l_ZiE>Tmb-7(X@H!NtVvkP4ZY54NFolWmPG{Ida~X=$_`bb z`!Qlj@3~^;H`2*V87KaDtXMx-hj|726#Spk6U|7k!tBL^*={0$g<2Lc)@95Bk^|x( zL2&sn)^;OFEVJ6(>l0m24i&hlabe%JwjH!sL&4YmAcROy_tZ}u}`dBnm0|enWoil&%0#*e1)G~rlg^=`1Sam)!7jpXu9wX@jON;UF%&YBF0{^ z;)dTT{&KkFQVK1s%?o?|MXGPrB?W4p$8+1i+M(_;ZgWj_7LVva5lU#(3PEx?^k>z1 zNOa~}Ar7B(m%j$AGMlHZ6-ehhCDDV<@1Uv;VZ{BstfIVl7tTt{VG(QN%dj#nB>HL? zHH_mWUKsTsFz0b2`x81X`|2TG4rvXBGu$tXS2pmpv zMCYImY-Eco7h_`TL2{`hI{(B#_uli@zu=T#_@j@Y3_QYG7|Gd>gDsKrj(is3xk)zY51@? z9iVO-^qbBjr%Fax26jTdzQJ}(Ib(PKZ_M3wz#RH)O%OLQPFr@_9{ZK0cJ5i#o-WjU z)%@944Qvjb@yVauh;**@Y@-EhY?`krup~_gL>f`LBrjW9Lg$K(_dD@>mo|t0xCS1R zV(=si;uL_I_H3+?^31Sn{u#`OJwY7)sWS;>e@D)GcUG8E)FG)Di^E&h64dB-_S$ZM)VeTdNS7OvVH|CxvIQDChI z`;8eG;yWtym>!6JZMFd_&kxHz(;B=GVLXz1=%Od~WLBQEWQ=^{l(~1<=TmQFuQgXD zYTb9}BGAgKZU+@i+%FIrz!bzU-$iB+4d4bR72On!KW+CTZj^gto;ypg2ij*;-D~ zFr3tZ{Zw`=oWa_`Yc=)>V~Xe`v3y zxgfemDKu0y$)M#>wg%1Z;!h6emzhW+S4n}BEv`w(ez4-lzfpayCFq8_(Ru#0RRszF zD98eT?VzkwPR&jW(%?JQ;#_|>zHY^I*0vme&V+6HIZ{6Pu3F}Id#{RY!M?~a2kB(7 zMtU{M6KlzrJ5lWsD%-q!T(T|e2H^FzE3l7%ZB(sl;?;hj>bRHa=t}F8+q)kXqOYn}bn~kh)kuOx59Oe;pI)uv6##8-#Ofv@ZN9Rk5KikyOeNo-}a4 zacYbIE3rS|s-!$3B|35-J=FEW&k45fj8}VUV-`(RzQaU2J;okcvw45bwSs*%#e?ZT>!|gfGCX)vUmWt6ZkIp$@b(Mnkd#(K5Rm`Y z2Wsu)OCbZ`HddTu6 zQ-L$gUz@4e;IdvBjeTdg8fQvU-9}yToAEQV5q@q~H_vfVjVI#;&kLr`L!Yr{Gtp-o z%uckScl!d@#?x-%6qK&O)Xe!5<>USVS{SI}KTPTDZP-9g_u)P2d-p&B^!#c+`v~ys z-i(cBnU}SWnUzs5?+*#-V9~PtH#kN233f#1lN;(2B6?73>*YFg);5|eE59GoGCW-p z>1$lP&nCpEHDQ?gCCvQgT7d{|uyDDUw=^VEAdf$6K|GCDFh&_tWo5jMe;iQw)`&CC zHd^a)!(B$)M*1;(gwmd9dH}#QQDIqtE;VVj$(C=|&evYj|2`qjTE~?Mx z;u%mJ&xi2I#0Qe*l9%ji&=P@0(lrkoA}tR>c(KNWBD@)^5~Bliu1!KMU=&pDQ?CgG zN${FVs)%io(9r#6%%Mtvh}W0kYDlnVBxkX+NheiB=?lum4}9MLBMPRxKbTeUA)b6N zl~c5&CP}n3|cPAurwyy z?z2CS)QsdCYczFAsHWA6@lJq8S*aGbU)EqtHnP0%Rp>uc)hHYmKNlY%17j57TJzqO zj7o>dK?A0y{L1jJ<5wUt*J(dnSi`Q^F)y+drEyK^Tr+=Q54LhWM!cuqv?*_ce!6;8l zvRhoO??lfN%TvKcL)@=*7@PS2)6KFNSGi;XZ?jz`#29W3&BbBR85Q@aSrP`(pi4H? za%gnbfgN)P=4k4_mJvgn-O?XT%VykdO=eDNM*BNjp(0QcIa2e~Et~hTuck2l_7&L{ zh9wal5YgjER2lJ(DxU7Xw%qZ0WjG0wwxMDCIgq9rQjwEYwey=mB+QO0b8*^m|n`hwzDcwXw zf4I2|R_E}2_X}aJ4EKM@zu27Hu38m6{zI0{OZ+iz>g#+K^ zwk12I4B2AW0f#`1kkRh)jizF@qLM}y{Q4#>lVO9KVrBd7xfwEf*Nezb*}B&BK1I*| zTY3XSil~<3WtM@;TnkoEPW`xaC=Kh9o5+h8Q`s5Crs>Jd?7*U5|e#?FqMHecR_8J z#2W@y=E6Vt*K>~8ttBEkVR^whTdc5^5*yxmykJquKz6P74679Dm{bDwD?d04bI7_2 ziOkYyDwb7bVUamQ9V%Y`JOZ2W4JwB^hOYiR=ymd5c`c;uhP`lUG%$3DddeTUN`+bL z(A^P#DxYM`r;QS;-7na5zZJwGIyI7EAJcGTJ zqyqKel;FtLolIVVN&P&lo?nSeP<<|5Fw@x_fM1B-Zv_f8$;?;yry<@6NrsY`qCRSIsQ} z0;uAVqev*}lM7w<&RwzzxvXV5Jt%6`P8t?xCad^mO#;2su=Ia3=TT5`SEeV+?-E^we5v9 z!$}7P4Fqm`k5xxBL_6M66gap?id4BY-AO(l)q*U(xX$CTtJ;?4Q zl<0VCcx4{W^HglUZWPAR`+k<&`qgCsxYYSP zqvc)QUr&^~F!-uBt<7lzNdL(p9)6*mdXf@kfM~wd=h-VpA*~501R6;e%&zI4I=X@% zbuCKXZX01Yk^~dvFQr)VmxZN~cm9a+dko7oYQ4znwWG5+55@rNvuG?e6Fj>PaAoxo zd3UjuW{Bg*w`A*w&=sr7s%5LjN@!?{@KG3%GPyTf+yFRGy-not1kRnX*?EE}lhUN( znwmC#>md&b@U*?6_Xm|%sr*vaz#O6ck{`cD22H}9Kl&7opQRnV6SjaG+I5cbn-aOd za2J1+XjuB zTMETq-kwXO;m?9=^q7I#J~$DL3oLMFa*j3ncq1V2%lD!$4c~8m_)_y%1Rtvm^D{vzjkGj}Y{t1$^3T_#>c%yj@bBTZ_31$ed#FtG~8JI`%1$#&jShM{|eeaY?y zYL(SDIU82pioyw*F|%F#RmsMnCnz%6NB|lspAs1&`{70;3}EHw8+w za7xMh;0K$w9Q)<@47s^jv+GB1YYT<&W`@pecRL|1-5dnIJz1LBVsnBCI&-e5^0Cf* ztn8IAcd=NBiX5AVh*ye-lAt*AjDTP?uOUU=2S@|^H0!NV_G18%9e?aDh8sY+QUapy z%}UQ_RM zH4GSmpq>(<=J6=|5Y5QMk`@xZO>rx)yea#>i<;PRti^B#`Kg2b@YLiwFbQomW^r|76U^8wv0pdPE}^<%CBZw-p+LPGy|Rk z?%dBMKu=ouhcjUAYdgh4_yHFAxbv$697?5L>@bzaR)~>ieIGJIVuhsA9Q1VJ9%pm$tYv-E_kj9k~3WTpW-v@%$U| zS^5|Mi&r6haMWsyc9IM|^QKSZRdGrW;k)5R-#fvOB2z+9wzJLY31p=jTs>Fp zMVwa7g8#BZvK4?}iVP=L`xy!b6r~0)$N|;{R>G-_wBm6M;}UW?)$>m*B;V@aa=Cv+ zU701Y2s^M?gQBogU^K;M`e)Nmy{Prb?h;gz1J8m`6psV;gjwB3SK<_MYP!2KTllAj zjY-%hyO5EQCirV07aHLyBL*Eaey~b3i$Z&f@s`*>b26}qwq4o~q`=4?CCYe1N`JLi z7LM65LkEjnS_MrZ%yr+w?*=q)CkAh%k7HYV|wX>p{j|sKpMZZ85f^NK-ic|iGW*(d-i(3h} zP4>e$fzy)fre~Ax+cw|3;>pH!eMpEb%Q4-~)FIiCijI_UwmFzB0&BXIiM@=kZe9Pg z6~J~M9si)mJ1?+}IH>`$?`&ZRrlfzuy{om6S0vtt7+0t0h=&#TQ^7`f71lvXu>%u@ z^jdxYP0*d?@PbQJQiaFj={mETZ8WI?eYZERYRE+^%!1$e7e_%>^&t(8^8Op?b4I-R zooR&<5mx);d=WwSIucnQXl`AycKEOmvQycF=~YgbvY?11@Mhng@8U|9(YmbmdnWMt zWgHD^Ct*i(Rhq$GnYRVZ@aW|;TUe>z^SRGP2U9T+C1ef-2ZE9QbQw|w+n=N6cCK=F zfapc49`?d(%Ph+8V`{SzuP!vn4x=9htY4YIU~x(!cpFp;@}QRdO_m#fRoB$MGZU-H zBszXAV<-Eru$W0@hDDX5#ewwNYn!T{2giRj*`RS*jeI#$pePBWOw{*e<~wg`9T|Tl zab1a;(lJhgBb_@l$&qKJgq15MWsx?Swd9rW-~OO6q%LwXBk&V#FWGOCNF3dWiC-ZA zEAc3eegLy|vn$(u!nZYODjdG8qy*RuUzK@nZV}S!8dM9LD~s8`vt2oJ75alFK|&A; z4dIg4A^tHC#}0CbZRh8PTIY_ROBiQRoV1t?KM4Po;5CD~v&D&CpF^EQ@x9ji`bf>) zo!a^zEBCqVg+0&nLr@>#KY0l$8Q9GhlOsf0QbUSjEx;kv$M$pj?E*TOg3?Af2vbQt zn;1T)oNO@!gGU>sFF#DRQ9HC++E>a%3E50+TfS75&$E{UU+ZHGV5_;d*u}H9$S@@C z&uus=Lo!cN5B+l(6``U7I*&w?5>O(cF^4S>E}J>J+~IN}eHDu#bOzFI-C&^j(m+<~ zvJFm;zAi_w%AK>|>eVRIrku9tRhnG#vAO*h>U0rMlh&h#L15@zFlEk!ff!sXA7{lO zPwY9QaVn&7p}U9H6+V>{bYS53ZfMvBV$rgr(LHR#rX&Y0LHo;4H-t4A8Kg zg9&`S<2b`>KZ6@s@-N5L89W$cBjN7-<)71SxXZs+)6+wy$9-KVnPfJRpV-!CxA-^+ z`l2^!W|dzJwV3oBF5UtCpwV)wv7wWXw$~qJi!y$V+Bn9vFjj?RE;RgXy%|jNguQxX zmJjlUJp%EGSDlI{xb^?@uTEiXE&K)k{8^7y=c1KD z5gKeQ>lu`}Wb(IX!^CNBMc__L;~`qA9a~WNu})Hkx~f`N8Q8Iru>yFrB0L8$&da!; z2@1d62E6sedsS;KX&dJE9Vn-w=o98FVPCsNaLf{l+%WY-O>?5Y%wrzI>XGFI1_ski zc8&=?f;#^s^cuRY7L{B7(vg#?iGeB?CmUz?B)wxzr{-D*$s*R|;Lfs)lBHaME0e*j zifUKA!v!7_GUZ6;7n(`@AFus>^&foa>gr3OSKF#HDcR!!)*;Zls{)|1h6WX+&<@q1 z@%{eD%`hfuW_?v%?NCAriVKt1^_kmyOBv675cN`BRr#PmE8}tly%}_71V$xkGU1vE zo;e2+v|x@=w^hR?)0({LsyqX;0WY(99gyileQIu=vbnf;TJVpK4T*?s$3xYF8GgOo zyQSm_9>MkES>BGz87H!{c{&4$xy4m9-WbQ<0_ebs1abtfNC&i|H*Sy29Hsht<>ipz zk@;=d_4?z>;l$~tQDB?=b3}jEC^4u!ZPDi2eeaB72`p)Fk_|B^)wX0&t~z0?Zuw!V zB@$o%N4Ge>GN# zJu3O_mmCa~AV}Cm)A}VH0)ppWL8IrdwAGCrnmd9qO!Pbfij~tO1X0K$A4||H&`{bw|VcCg~P%0)8iF>pfTbps>z4QRhYJDR5&$w#!5!L z9tdq&=i9p~&**YMR|p?IJH83`LUr<+0w0#QzJH8vv*oj}oA}CmBrt6>XVrLT)daX+ z;$VXC_WcC7t!%l_Cog|wMjywiIDDntbHbsISyy+%{eBighE{=nRKc6#YpN$DQUCg8 ze=p#sDe?p@;lTDT!D#l8V|%YWV&_IOON87}hR3h{r<8qFQ)|c>=WQN#a}q*Vmy2SF zQgfq)cFdSiD74#TRqaS7+Fys26ENiuP^Hg}CkY}@tW#v>Y1>$sG~ z7;R1ssv#j{?8}J&l$8Ul8!%}odB(Yd)jhghwZq=d8)?A{e;pw+WZcTjQCIp~S-?_9B0zy&A;M_ob`5nrD}Bh>qy^2xtH z`3zaa^aARgjm z6m@TfYw?8j-gG5@F9ESt{Aw{-0KTK6yL3U<+)EH`k@s=k?cKK2ohb8P;;=PDvQhiK z3k3^M(Fb$&7w?m>Jou}XC4QlMR|8^GN3LgBd^d4T>Y=Jl61N%SgB85~N6~o(viY@P z9HnOMQEC%JY)YxU^Tdq3H>K55wA8G2=KR$9}<^e5z@}t1P}InL*H%`gg#El%~9tg>Sk$DzEkHoSwjj#Tn<+bi8CfO5laaRu4V7|9QGSQ? zrc6v?$b0cX<(ba-r%*V8SDw#|;!y?LDwyb)b$UDZoLX%yt+aN_di7GJ+`yyujfesl zB1pR~nUSlu0ay9hm_R?!h(if7eI&*m4pZEZ{>t6>2}?A4%RlL2yG*hCRtKVbs6g$g zygFtf#8QUaQ$$m%!L2kQ5TtEz8ZD$_yHi+8-t_BeGYq@=9D?-G>Q;XiM z`-2k!LTrt6Tj`NY|K@V|KH*w~8=~t)dzVAfXh1ghz#Lkr4}=9Cr@-bDVd_Qz{$TxW zt~0G;Ae*FRL2z1?K}t2xkp+al&mv5#?LcqWTzE{LcXug+h)1I-(ioYh+{l-^tuu9&K7#V3Jple zY(9JX?wRZFyb>A{b!W}HEXLisCK>+8updOpAfZbBAU(lR0PvUzEi)U5FsNS&%x2TJ z$Sq;!c{3AvJM21Kn=dITV;Eq~vTqH?5ODma6P2M{)Ba~;qW*qhc zJbcxY44-LoO!9?e3)l#IzwhfoK1evxJ*q?f9F#myMcN=p!`$Z~j~h84L?c3Mc_HQU zf7iH`JDQbXrH%QXYZ(-rS4m4(>PPT4B?#3^5SoCM5b5+)MQvAmyn9;G<|f}$*ObD} zi*1cZ(XLF-lcRDNR2-K>OTR4BG;4k^D|?Gc#J=a3waGqVxeR|$OnXK9ilZ_bo#}O) z(2-@iMDih!TrIrWJvrS2{K82bFnB_XZ8s9-xn@chbJbv> zjcTxNAQhn$)i{iN6X5rfXR}XP;dKSqWl`BV!T6QY9o2r66@`HH{!3I078kJz8fk{p zqq^QPixQ+D%r@Hto68}l+lNDmfIK2Cr@WPPeBe6*E&Um#ze4z)wk6edFvw0)`aF2B zFI3g<`#d~9$#yH~eLQb*kVIAn86;T;_fH;Ot%=gJ%>hv(1M*5q3t!X#-gQX!Z0`>c zk`W3+%)sqK!FA&0f?;~@D~c|%@+jM*lwYNlMDuRSEIdqI^Vk&t1^&9ntH=d6*)b&o z8EcWoenOk8Kr=g2zLGvUBC$phF`(XX3+exXzA?=;iXPY2@TMStJ`B#_tqMpO>AP9U zqg5>~q*vFl?@Tc*fzOy*_95pAON^B0h-zMMRBF1`O3f);>nur=y0`2R@eDHjR9G-; zCvAk^D=K$i{b@xQ!kxBhV%=3ah%}ClHUjp0qDF6N&zwo>5S*g_nZH5XyZoQ@fo@1queR*b)8;4>2VUMlcUZZUKRu_j(}K%4=6JI7z)GvY zBlEM7nZ5o<@YyBCDE8d{%~JF~iSZsQur;_9wOEjSV|}0AF)!7`L-Zu7&EfKq8Jl>PUgSDM**(2qHeoTQj9kLiymHXn40J}{ zD+Uci6fxRQI^Q;fqZqjef_dm?_q(x}C$HooP{a(;2burN)k_Q&_MZF;d>3+8At=6d zsop%UdWo=OtqTf^8eUHKO@GXg{v}-RUPBdwQyTzu2_s>58?XuP<9i)2Dd1!fY${vJ{`Y@iKg^|8P zIbyyHknnU35^fLln*nlXG+i$sF7bbh&MFSH440z2dEbe6IdG4F|4M2lwFZNoR#UNK zWK~#Lk$_MR%0%oD*NlAAuvYkq0995c#pA$I@mW1iY#;TM7-w#ifN~#HL=VfxU4;x1 z?AO#DFr_KT7=cA&`khKNK_R>Ay83D5;V=BvBNO`p1ktpQl4G|{V__tVg(BITfJO&N zqxCV*qdUy{p78fsov?mxgOP{MY>DCraiw;uDsd$>p^m0cOOVy`gt5zUbm`I2Q9)I; zY*spqU~gToR!s^~g8nEK&!@TRF>e5`rh;vuT$Zz%3*|AhXnXy3QOvDl?08qKE_I*p9#SYO+&$1*aNSMtpq1~zTWdv9AkpWy-%Br$b@bL>dZn>JAd#O!%FPE8AX^U2!w zLg98f4(oth&}eOCk*XvkjGtell-Edgz?4&Ze;@QSajM6$sQSVeS9#o?d2LuA3h%R8TVH@w=(7M|_LDmM4%Vn#f^W z-2|zm99g!1L>>JrYL%2P+|+=>py5tn%%SK@E7pReI;un2y-@%MPSx24qq(VM7zE6Z z7X+=Mg|K=!+KwZHOCt0j?!oBQR{nO=$y#Qr^&gDB6}%K9W|uMXS!+9l&a627Gi`qi zjw!A>TS^~{xdrh!buL$>3+%r`G9x*F{ud3;iI-Tm)=IlkCD}B1tMAVDOU)SSXvFcI zA@oRA>r6+L1Th|N4cHDNTVF6-_$$NV$+ocE=~H&*InPBh zl9(CzbkEwhGc)TuA?gcp`mhwkbbRCv(bg?wnRi+KRrRu1~dqfvs(oVlUZWk0e+Jrm$?mW9{W=e;3dx-pU6(O ztM8J|ACQioIv zJQ8&z_i<6FCWg80xi&{^nFu*p3F$7<tYHZ(rm{^UJ;qnz)`o{j-lpyy}Q*HW8u*Jr|u3}u-zAa8kxVgBB z3RVy(!cq)e4U0%(^tVVJvly6~5cwWqfo~&K!%iGZ1#baF1qf1QEd#R{K{FWWhHSO5 z6Ssx`xrP5Yl_PU4Tgt#Y9QfrXKmB!j5CWC!x%!P|*C*Y{e#wDf^lB?$hm)TnXoSXS zW$5Ov;uCK0wydGRrM*z87tePX>?TeA#z4k#45%O^EF=>=aMy~KN+y=TE?3po)Ejy7 zsVE%C1(X{#|8?!b9X_V1CWL7&L83YfYX8TG7F3EB!?R*OVOJUF^6utSLX8MjVXkvi zV)^UxRCn2{K)K=aJCFphF$%4G;n6ZRZp*L}r8TWvCVsUwajkvy`}gS_WgWyWNZxH% zPA{|bi}^Ue1Z#$16?cEOu5rT6w}(s{+Ajo?uW#tye>)w#?biEmp~OVg3;>&nT9__J z{9r2M9o-<&IyNBPDlW8=R?=bnRj3Y)0?Nz|q>u)GEt0ESh?v>Yqxws6vZ2Zu)jn15 zpMt`L9N*AtZ!ceKna!4*#*AVFE9db(0#T>)CUB}q)t2^IO_~O&veO%uC`Nq{31|$U z(5A^{U6HnbFK~~nLF;o95g_x}qkFvD0!IDeODZB!h85{l_~B)JEaGuo*m^|ZkUrEvZH0+lV*2+7 zwH;FSflgknVZWp%+;gpZ(y?Y-bQ8|?Uk|T+`K^YWoKF&90oZ(H&eKI**dpWy`FHU+ zyP1feHf@zbtAFAgI$6ZAxTWwsxnP%^^*uDBKQ3BG%e_BY239(SLFD z)-*1Awz#^oO`tx8E2fzz)}OtZ@qvtSSUPH%$Te6&9jZ`*Vr_S1yXTBf>m$4j)b<*; zr*<9G0-p*iPYGj09Ke)8FQo04(4FRLvZ8?R}o?YF`RpD|&Nb9(E^Z(41BXytR z0#i*yZq`C-%08>y4-3Dbpp#tbQ&gLtddKt=wSzLZw`hWGEY7C5o77Pn+~0AtQn;jg z(cvn%u?ufCvo3p{%sh8~Y3`G~sP~1W>;-Cz9?BJ?L|iP$-ln#ARB~oIwtbLPJ!W0q zl~7B>e?NR)Uy6lshP@lXI*@&IL@Qtv$pIO;%3C-B#5J->Yi_=b8Vin47m)6oKlRat z-q2Xvu;xkbZ7w604_@@N$LYmrZcgu14(ht0?c!mAl@z*SBJ9o9T${Y8<*etA=e1QH zuT%fG`J0>=K;-?kAx&3L+PM1VJe6yuLsJlT?I$i7@Mcy0v)A=!L=1cwpvD8#Ei@wH z?^dR1Aq1|#Q+3h&;~l>wQ$`A*&(Lv+@Z|~~`-{|BT-zZK`h_#%%s1z*<-*0<-Xoup z7Wk_|+wfC#^}h6z@iFymNJyfgnPEJ6JGS!&SP$U$&w0I_^Rx$<_II0i$LH{(=alq4sPq{y*y*Nzio3xuuztSiUMvx*)y} zg6Tgo%&X+!q&0Y?YOhvC?jH4z94`Kw6GWYb|Jv0GFNo>F1 z^ZUhLYj3izIy5p)f43m|Kfi%AC}}r;Cn)MwwrvUZiv*;hfPjBTzyF;pxr4Ci3bZU1 z^iSSZ6`vBHmsptdlEG22O`GC{y?%rH7p+)WK-d;-ZVB5uiZvEiW<>%lNLiAY*qYEh z>$9OGAmY~?x5q-!w1l<7c?%6*fA*;kqvx-*q9W=*ha7YA(?vS)_@J02umXFI;Tp*g#{U>9xk)> zGQ5Na9J&=@2|zpkM+FU8s9%HP5HelwccyfecUJsEhE}5mQ91VVgD*yU&XjqDbR%78 z=&UG!l)|l!kU(~2EXXzV4 z99qqMUxB+TxI48wcb{1P6RXB!!6HM22gL6&C zN^VS+>TP5_rHrmOEwS<^;9duB#+J({0Q!yM?I)Lfw98mZl{v`iPx<*aJGnjMepW?g z$4lu9K7}S4Zq@1T^dXQnk<9+|uPn*+2mdhV8TCI%T!6AlRK`lj$Gdf)@{fwAz`V4C zB2e&?v|dj5gWSvdz~A$T76iM!rb+p6ThAdfu=~_ESOE*%Gv)5lvAn1fEZGMZCD2LG z95w8p)dDNg*s1|am#&I4`6Z&NXtz@`I|oD{|7#XLqMLUms{+RcNI_;K8~smMSTC`L z(Q{~v&^bs=%#tyw%UD?<#(XD5q>wpbPdWH7?iIw?n85|ZYroGAzQkO@r+cAjl)!34YI%f6_>+NoCkpp2}EYbxXa0__^ z%pE8PJ*&F3G_=^DQ)3(n{YUZQZFuz^-=AMIa);1~8Ivp{Yu17X)sucR8B7x%*4wa$ zBB@)TX)u{8ruhJ<9qpRsNj2Ao(jxzQrf}7ODh1zbniLeqg><2rjJ2(MfujQF`f(mj zYB!sa`nI)Va!AHvg&ikS%pi`MK-kQXyX~=6R{u$<^uFC+Eqkhw#Ke&w;hVdvcw1!G|+^CX9%Gdi~T`6yC21_oP+&`fGTs^ z$b1(c3>A-a>3UZ4YM&qaZng(DVp{cRZ9xwdRXr*FC**LT1xGSn&#-z#;j~-W{B;mh zshQQ4$n%Zu`MLcDSM%NqgM>~!^T*8;JUmV;|Ke;%ctQZaa%KFwPzjZDUcsP5b{Fk} zSsfM>*|_hdYAq6hdgjz%ACd#@v(joa5Au-v%j|o??2EW}na65SO>YSe3ZcT(y43ns zASGuW&&YK@PPy9AgNGEM@L!<*1{ly|{%d_p_!!R;MX^Lfwt1k>Hwb1CSyt_8d11E= zUdw~mBX5ZqsWbWrN{1)$c--sYe2OqWKV9kXZ_O%grAP;tByf+uW^82a zx~36AZPpFY%)HdAENr8m4!LoqC#+sjAg|4KpU_2@sjbp$ozd}wbhKv92Q3-f+tDKo zOvQ^#rUdvCZb$vmCK0`1{*d}jN8?wQh&$BQ-bN|(Bg#sau0E8q!2!MK^AnX!KrFs` z4c8}*2V8x;?+G3hIVYcsJP>gMMT#YYTWov>InBx`H09G29&t6C;kadVC@t4%N&Q%w zwPI<6BQlxEEqdNCTI6;<2r9C&LX_+*H6bFwFH@L9keS+GD;DP`OYRuxm>4buW zq(DHdkZJ=~H>Wi|fj&3lXRH~l(5-QrFyi{5H4YFfs5JZfwDc)^&&Gm>j04Wc>0d){H~minNe=5kxYh_TOyRj7#uZv`y}Evk`r>!smwOFmerMFR~_({ zB1IG<+6OR5TycFipR{D)w=kAMi{jVGKu5^u1{*D=xehI8jihgQDS;Px;(s@ZfZH!N zzw3)mY$89nA?0H3E{)f}b)Wz;S7pDF5i7&oTR?79RLc|dbS)M{fUGrv5lHfX-2s!$ z?Pozn>=y%SF4vs(`OchMs90qn3X#UpDaF^b{2CrN6mm2@oJ&BALS9?Bj;-LR?TS#1 zXanGhku6pU*mjx0l5!H9=W}sTYy5n@?t3H=b^eIxVSI-7m~*nc#)cr)dgtR zYF7_SE1nA8?)x&@Jk*lnV0CvA;xs)~jb`Qk0G= zQE7)wRfluGM#`0w^!q}BAm5oGgv*QN9e~8j2$ua_ZONUxD!7DS)=l#) zc{STs;V&Nf{Pvjtm+@QkuR&K7pY=ui?5H-_+|c=Mpnc%*F)2FV15Ka1S@<72QATa-;S8+%_6uM z$#>%4Pt%)89ckCE(^-FC%8>29nV)+1Vz7u*Btf4uq`d|a#5(;OYi1jS2n`|@VvwRO3zLyg>Am>H$>HP<@U7e5_0spr@WRbVOFQ5wC$<%o!-Ki-KWevx-G$Ddc2m08aQ1PndmZo z#qav6S?$7UrSH}|l*1`)?)Y!XAJqaTcv+j1>`z$czAXKpKSF-FJ@%Xlha7ou-s-UB zKOfwByGpZkxnP2DkckrRMr5q~c;0pdo<(?}gGA%mRtV5R=1*f=2kUP6p2;mCPYSkq z&-6bXQVj%Sgu0!ppypcpUrT&SWjcByUvM?6ZI+xlEzitUms7prcMJB3ON=mtQahRD z0mr-OcUkA%Ex&}zie@$OvrFx4hlYULlHD2Pe$sqk4>Ydoq~ewL43@pN(s-|)230p^ zww2d>%kWu}n~hY2%hP0huv&9FEIH!IuwL^HUr?H@uw#qJ-d>gP90X;#?y(wh=L=7l zboL4o1VzVX1208To2pTI^??;)>s1qCG|T=b1sp`*rY@D}hj~HgWFmY~zx>}vta@Fp zCCA`yb@Pg`_6EF}7T_~we4P=)8%gwRiD$W-diiT)O^1LC38-rPFT03JyYdQ+IweoT zn?Ev++ZP`3FSdhjKkf-Ber?)3HVOH5zlFStX^%j8_==wLu((a9bPz%AvrV5W=DWuw z7f$Yzq=T=t?SvV~j^Go*xsfHBL(C;=6pxg^g=`@r^9+4Go&P9!{^6bQS88ABf#5pL zFEwMX2(z7X`;FtL*L8pExSAWDO+JQ8-qhb55vDWc?!{g3xGDh^$lr_514$NX(|sRr zW*?Kb++0IYQqPMok9Eo=>Gar`jPsilli?JUCJj_P=+E2sNaVZ$*<6TldA98?uMMW4 zq!K2&Hv=21;^BPSdD(?XHu|&IgUt9dw>O%izU@?6O;KR$IN>bnn!`g#^Be_TpY+kJgr2JY- zQW2`DT-Pa|VhL~6I@>yPN|hXrNap=@R{3V@8Tc&Fcy)IEf3;=_0AB$-ntty4<`;KRE*5qrzw{C8QM~i7 z3bxEB85V5jnOkxn=Mguzg(Kn1XVZ*<_HB<=cHN{OmaQO zZhzRuQM1`*u<|ov*Z&|oa1KOM#qYSQV6v=oc1y;JkPtv=oaDa^zoZyMi+)6tY?-rb zz1;oE4zI{x58CqHcfLu`r>L)t==6faj6?_9vFanipcq)8pS$<(#O(lLY32V6LV^oW z?lc*~2T%7t{-@`Tet=+$Mo<|#ib_9P=mYL6lm0pq6iHIE{NriIFg5mcDlqZAAJrWE zvTp0lW+*emwLB@9uggHRFsiXU%sKX%@wJTiC_IY3BJ+%ySW`7FV|sl)8=r%CCg%S= zV;Yk1t1`8)Lyf_w@7Egx^q5b%xp4_A^AlY!kONa(IP;Q(4k%(JevqYZ`U#R|4;_JK z{ESg%L1m9|J!dCW-a&muj;(fPah|nDhGZ=CTb}4%NZjbQK{Pl+ANZry@m$GJ>dL$? z7z=oz1)pZ&1wnMS*+A0aP9EH)?d&HOz)&4LXI5g9(^1+^Q1_;ilLlejgECOSOh;KI z7z&b&T&Em%VE{n7P=#Hfq>mcSScYXzqw7l37Y(6!RUp&g9%0|Nwt$}{#7`bql;>Eo z4#`>Cwr^zV5oNi3Do$aTtbe(t>)mvk@wdT*jOTzut3PPpC5`Ry%dTQS8oYqEdcQP| zcTsi+N#@yi#~cGRx#K;pWwy58`_PRmE4s^!8wWk#DxL)|7fM*LZrG5(2ZH15WVVk4 zOTiYU!r^9^;N+elwIrU6K?Vq=4U_5ZgenSO^F5{(M!nSiKP_)&9xYc%6`U}*a<*LaIt#Zv5T*Sy|1O8G^Y)xyB;Ys_$QO z@&6rDJAl`nlS^K{Js}`D%bf;i*%?i+c|d$4k&nz}kjpUK!rY!ygIn~kuA@?SG{;`TIFhT!A24+3JH%Nx@?w>KZr;fqF%)Xo=4TU zHtLS(qqi5?L6WE{UKFRu#IG#9y{ZT8fm-@)#DJz{bE)(l>k&=TW*jr7uYXd&?si-i zE%E_BG04#BspEEE_b`qB2>;h<|50QJ8hi`%II$`v3Ptf(S>)WK8==@EVCHExYoo!Z z_1r5=Y-}+ySDr>Tc%Pk1M8%jmx2nvlAlj;630o@XR_~r2?3_!|Kw5~4cND3jpe^w6CNRBftud9s_8v7pweSfTq%S|)`3%xtXai^UghOaVEVdg=7vbRKDa&om!0Z$;`MaqPQ3n#ILrZd5&ca1eo zh*i2liQCnpcsMqY{Xp=}EPE2BS9*ic`k$0xyM<e-rPK5?rmw8 z3n1?LZB?D4X(`h#2XZBO)GwZMHjLxPf+m5=oG29D40iejGCho&K34AS(=s{cO~?~v zB|8MV5vl70-(VNDCU^DYBf>$qlW!lR?a*iXE_op)QRoMomvtK!UYL0 zMXC#Tc>MWDxU7sYc6DlV?=6KsPL6I|?oOquCJ4tIIclfm{e!7D$BuH((wtcROY(;yerO?C8D2xFp$eriMGG%WT(ADMxA=DKHAR5$XgSWFA77L(nm-~6q6|VNRNJDnY zAW=C=%hhO1^Ycs2U$d3p%RJ9xI-xTi>fplB6xz#9=bvXG-SF8GtAKQ<2l``bnT&fN zr9BXo`i2WhV`88$YRKx?_Vwt8dr#r`(`rw4Ol1?|B{Uo3G~@jXMYw>s*o7HllSQJu z{Nvr}`3A7tf{+Z72e0rSU7^acOyf>ESx<`SdGBN(ww&g_J^;Y%@FUqWPOcwly^SAJb1`2bo~7T zfw>pDc-u}D!{+4(T=Sv!;0~;q(;QJo^T)R#&(g8w%%J=6T*q(3ZdOrmy2&hoqLOWq>KHVB93#21TlDOz|g^J4h?{arVr>y)KNa5j<=;PTaZGCxY zldX7%$Hhd-m4CM?kNyI{EHV!U(V8qfo^_Aby{jrWMxGvs8VUELSnQq}P zwYgEeELyW^MH~kD&=vs(Fxk@`g)kN`{H29v82*me#aGy03#xV*FPXcbJ@rqHbK;ug z_92XR8v)@VyYL3)G$w}OnvYkQK&PTFV`~U1;C_k#{OzkhB(rYJgfyqRq|Ax+EsAZG zI7WguV%SL51n|qtEKP*&hz^zTQ;L+;xEFj82=f9`LPHzhJ){)#&Y&jCs=(o% zNrC$93_s`rKn(fe*LK9PN)XWK89-b?fCQOS=eL(L1+H=-sKBwO| z4PR-Bs`Ml~>G+0nsQ42`HTLj;R~Zu3^EHBZpv~hpNr>=4wf& zvN|ErD1Q5X*2KdYgc5d^R((Xp=eO7X><{monY55Q>PfJgn|J0i22HI7uj}0_ahFmh zYn3?n`0a=4_XYq8;C7g+YJrl;bK)*`d(WI>6Fckw#s?RPH8_O=+{qhlPq}?_;+cik zErmo-CFdDT@`GzrGqa3{WxPvs>TfQgb<}vmu~67+Nqc&S)zZ5_@2t&!wP#`=+hCfxCFte9G}Tt}b0@+82W`&8|ZrhR9d z52ba|3S$lW=i`3#<2$(&1)QMQ=8Pd--!E~sgB5!BOa60vfho$HZCz6JH4IM(3Z8lhx}CXQTBTASg=Tfvj5f+>>`X^;-C*bE|;BbJ~22`7bWyZc}pPw z=R=jo>MHy?mVg6q&g_aR!+)L?f=JIC^`8)e0UR8sm*Ih#YBmPO>3I@ACH^LXqbpz& z5(oSTU&68%tK`>Et%q+G`aX7DS0LRrys7Ht98}V|M8wnAItCLyjO{*|_0f^3sI#Fhqlq$pF*+by zUA#MPEEr9x{Jc$0_WuZP)pGOIcIK0WP|Jm(i4`K?CtPa!FH8ba?UyYx%Dj01+&kpf z>N95@huu;5GoyAp{1xU{uxCUVA2H3oZMNf|a59=ep=1fx(}WkyF;zt{ZTH+_rV(GPxw_hFLk${ zsdj$4quWg?Y|Q>>boLh%G3tbwlo~AmpHlZ$g_=xk5A?XzFCD6qEioe?6=6!hs(I&V>w5Tg1crizPsw) z5sh%~U2E@%hb1Iy1`7X&wATAeS;v+JPWUG|k4E8wee{axk)Jm2zudpDbmoH?`dM$g zbOlG9p6EM{IQIv~-Fo=t?brK8gjvd8x4XRorR$Z5v=v3mg;4tfX_Ee+LWlGW63hM~ zKF>?qFBOJtWkAbgaM6OyXP>_@--(t;6O&pH$3XUD0hEwfj9v_E9OA21#zdD$>A(Fr zium#m9}K%k4*2V z7*P7CQycJ+es=^~U@Vf}m+VxpTlMm{^6Ib?UqJn%p6b1?7b9QYkHGjnLv*8zX&%Q9 zxJJ?&V?LCe2^-!75!3p#+rX_uuxePTnDNgCwv4`KPOD>o2b|ih^-HA9j@2<)uK}0I zZABH;=1K#3;(6?md5c6tGefzK{c}gc&-piJa~OjmDdjKI9B zV7uma%I(OXQQJ-fAhxA{xbz!qjC+%-0fAvu8u(1ZdtBX{=8;qhy9q~(ImazXn)tPW zn23Y1(BoG96QXwS)B%7Mxx3K&`)=vofo5kJ`LP(p5a|#FOiz7S+wDbfx{62|mq&YS z88K)L^@;i~s&TO2i`FIW?S6r@Ha=n^u~M2dBjy`q(#&4!M+XsiG#@YH=))WN-Nvuo zcc^Z+w}#Q&{anExji6h8D;=|??yb48lFca*F7e)UK&uz%S>ZES{U)^(RD@k4@bS6j z^`0=~vaEJEm(UyBmm}2RU`r+cl<%pb&z(A87Ra5-N;&95j9?ZT3lwn8o{pR9!z=$a zGWsq$Asd#{W!*VG<_rH(RSOp$8f~2%NE{T5+z6HpqC0ej{3$ydK|UFEKcBUFfO%B@ zMZ)yx`&Ws$?|XQjse+jRs4}XSK9|4O^x-KkUxgi)E&R9KRb=Cp^hAxD;ig6no>N-leSs%;OR|9?)FkJ~nj5f_pED5b zWRYRvcSH~|B~$>RZ%Mj>;NCQh86v2Do43;QKCmLI=PCrS zoX`Ud;gG)YO~oFmmeFuiR%L)wR`?_i?s8*5_dd0hwwB*rDrkad4n4HBzsOOcV@1m2 zB)C{C7j*5uEC~}l?1km!T@>j%Uo?s|;hn@I+Q;p3BQY#D{Wr{^Jj(m}+L}`zu1eDl+!3W=YL_D!wzhh*}UIh*akYLRgs0D)Vjq z3<{pTTDc02Mv)+t>@*u*z?LYdKfsKny7j!yZX2-ue2Fpa6Ab0%U`e`p?6?h4PPe2~ zKs8&q5J?(aIQ6|Iqk=JchD57lm3!~1^LfU49HPiwBqgdXb>z6++l~ABeBz11L2J9fg9SxP z+^t~#76lkUiI6(o{OPAzY^e!h8CI7;GBnp?B z;|7}FZ)`vIfwsUL#r-kvZoz@$HeiE|AOCa@?50z#R`T+mB+ECUg6P3*>!+=E?(sqUf`)$ihU0xr6=)17Tm!KMAu-{YMO*ADCg zv+HLG$YQu_n6{`>JU=Q1LBgo_vD}#l)Hak$lwBaNxO&0nu%Ro{VM9UG?npJ!?R=}}-dY9Y zcpvXw-vzEQ9^0=S#iYp-)I!=HG4lp)%*N?0oGcuq0a*8^c;)1kju3Q$w5n>R4Rxb5 z1%JHH$ODbi%`A4ijni(%)Mw3{;l8 z3OhJqHOOkPQpnCzGm!3FUILI*c|?YhNYqzuOE=x|%RVw;@mNDeL;tQi0rG(M!Y)p6UuHTW*E zNZRJm^rAj``iUBq`u3L?gbRocPz~QoB-D}A%RiP|h>*JUz4r{?T6NxXY#erOj1&2^ z`n|$N(CiZflXRP$W1le9=WXZ!I^h5p@ih@e`)KC#*&-kIwH4LgEdha-grmv-3!z2X zShSKyMw_L35Hn!=HDm8l)(>(xYz_VFzo-pWu~%sSUVu-6vW;-p=13F!aS=}lg89!0 zGDi@$1e%;WTvVBtAcns0OO<>AMvC(o|4IMwX`>7BDln%5(OowOL1WJc)O0>6phQ|m zug||8d3+j$>oC<8!O0hEEmz+4jL0Y9@Ay&AgxlhbH@Iy0r>RuP{w+0&Ikom>_xPI4 zR3%bmiJlIKH^V$`8E)ly<3bPJ8_q`3p%zA7(uQ6GpdjHY{vq>#dqO=Cr7&gD7wyh8 zlA4t*|E;r_C*C|J?xM(A_a9L;JXcDb0#2YI=p!;#WHb>s6rH8R;tY~N=~4h9|Nl@3 z(Ps{^hX! zr5wK0T@Bobi%t{!_AxO}cSLIn_~6IDY3Ob3Ejl^wIwV(e+tGX6dIUr_^mpyU#vJa} zq;_rUktK1rq9W2^AW9D9}$*y`J3uG}8V zTpE!d+AT07b}f#Mw%}=7xw6NeZB`%b8~Rf{Gf%>ck$>QqoDs%LNiiQi(W-dRPxaqc zIb!$gzb@;nawO|r=?xl;I6KxRX^t&;V9ltCX$hSg3uE&KLdPUcDQ1D=bd#Ma*-ESH zzj>`$LJSNr;Of=P5}$$sbFBxKjK^zzCGRDDSK+gHZ1mZwJH@&N&(onh)t1)KS~Sns zRE!L&8aET#3pDH=kXOPLdD;x&Jgdv*uJ9l@^GKbRK{^G0;6*j#t7&$YQc>M}j`_u; zdD3R0b}7egZ_+QGa;I=_Y$a~kgb?A*kXJe#8;btzC+$j@K5;bgmAzCUdC!sG#%|aP z$v62qc}cks2;9@LV|khnBH=vNuph1Iso={L&sB+4$)x->ex)FVGL(3_Fc$kqmF~sJPrad7-QOGhnt`vJaS9L&B zc@NcPyO3qO5QlSB9En6gNSWRw!#jAj zpq$pxR`deqStrTYnPIYwy3v|J|8cL*XGGNXEdM>QJNC!__{5Ca;I0rJeOcEP>93L8 zL3N`jK?I;$jFc=6;^@K>R26|ao7ji0VUmn~A7!5=~IsDRN1 zqo|5umA20$e2}356~8Hl@$BvpMOV=i!>OdTob2H3J~To$s2lMr)8H3nocXX}ZpOO* z^FE#m%Bn-JLqSMeh7m@ws^AXYO`>Tn%=&yGVXCvfG6q-YhGu|*Qs`=)6OIKMG>(GU zWvi4Z?6arb`=^QOln%I8PZ*LyK&~}y-NEZ%RpYoD~|8aDdVNrHp z7auyLLqZw`7zR)p2?fcSA%~IfkWxxIR6B&VWC>NHjm*hDBZNg#*^ z_oFpG;(Xpr7sng={`E|D^O7=N1_fHR`88APGeTu~Oo-%Nt(`>}oi1O`53R!6=l|Rm zW16_1778CkyK8Fd(ptcaRyg%WUkOlGuao4FL!V3><;8bR4qYO zakxkL18mW=qSHwiifV!|JN{&N7U|I-L=W!FtKti!ZH>W5=6nU=4 zgHE}pa}dy=b)^#VtY33M?c#Gh+FxI@!oe1u02ze;_X1%_oFEIv)lt(G#2}yxy*UefaOOg z-XM3f25UAr*fr%RiAissq(@l|S{J7WTNeveKXO|LNCF=mrGEb1F;D-X{qsSAIZMjQi7xTi+9zxqyh{G;&q>b4qJgHW-SXs;>6zvfSu#JW!{~CAgRTFwR zrrSiaF4mSQi;KowPM`mna8jkQx;kPHMS8^Fj zWQ0|+N9Ic5&k{YcM`&#b(4tOm{_=|Db8vRhizdsuO+C7Cix#qMdw!x{dXHyJw~ol*nMj@GKbrlavon6;G}JmuOAC!D zn86xg#&7D&e!SkaS}^6ux!@S;)m{J<8Q2B%0#9T^iO8noy&2KL@*5^Y+95vv%E z0iW04WoqJ)KZ33Hd|UoMvuC9l9H!;WT_5AJ_?>pya~n4WOPzo*Xj zl=$9#{sqteBb*nw;DXwtVryJb2uTD=`m2HF|_B4g-nE#+9cjq9G*|lmZ!|K}u z(TFMIQ|I!S(VqRUw>c&|7%xChjhV1)mFv>>sY^*f2+=Sypi2UOtOpyIHKb(Pk-vF~ z!qaD-bhT;O@x^)N7SpMgGCQFgCXh4!u4(~4p^9w++T$?|3|EB=(B=Nb$V^xu7D0Tv z@bpfZru~Mdqxp0dty+@G8z8W!|HV-8Rvx;F;Zx}e*Sykx(R0NeY@=SWro8Rk;Lk=U zNJ*9w34*KC_!2wv*SAY$Ei;e#y|AF}o9?0|FSPlbyaiw-+`_>Fm&8-V%FbawK<316 z10$1amgi{k5R2UZWVys$Nueij52OJ?IDGT@?5C=+xpnHlyipQz(C_9vhL)GB+fx=2 zpSl}VUA7aZo*18or@@D-#SB^H=RO#dNkoytF927~XLW0W{cP#XmXdW0VRU8Dm<@`Q z`(YSi(eh_awNxJ4@;MgO-S%4J^>J&jdX6uc!_ewl^)}49WE+Z0S0}8BERzN!3~$KX zb<8$b zK}T=HkTD>rDgE2;;K&EXakt#356qDG6qiskB)Q&~>B2kqVI_Sa1}Cc0ADB1>s>Ee+-ga~6DkYu~8gB0P>M*p3OeB>_-g0d>>E`n2h1=R9(^&9x+2j zYyjHu1Epa6-gx;Z9$@R}N&lfPQ7`6#4so{MqzC8OG_EI;a29}q&95~4#%xo920pg` zs?NXraU7jW0!AS;JwS1(Zp@EO{ks|8p{?q-R-;R|P8&xB{%V@Of|spTNBhfc<#^!i zAzsI-i4+tBJ&|RSPySoYa+HVSxM&`85}R7 zYx05Wp{0hsnXr7iR3diF!$pbgs;81JxGVQ%6wtCr4b&5&q~r;G#$y=9nRcKcY>lPW z1gpRv6vb`t(-=G3|65r=U<0@?KW}OeXIQb|0p3#+!%%&Ibrg`|oSMALH)0j#h`ird zhQin3gUf*$_BFgYX;Py7gau7>Bg#~}CD$zbZ)E+BUu~7_Irb%Cxfck7IN78#rHb@c z9&xM&suG*i=~R2K{HhugvIc)!(AXtSd-8h%eGE51A|$%874~#M*XxyUfAJx+Xo%H~ zLXJCaT2k|?t@N-3g?>2MOv>zxbR>iXuCJlm$ZDJRuJD=Kr3AIPoqy9mPSR?3~zxu3yNIB@*Z zw8C6kv8qotoe2j%NM}_x0FJlA<4{RB(+=~0KN7^H@WE0sexi$K&Xs~Zg)*X;H_;eV zVnLXql+^ftuE$7bEHeNi12*txGr%`%-bOi8zhZO*f07~Her6$vDbB$Nv*#(XxNBc0 zRE=3j^f%^56*`IOvD$##C9AgO<;%R~KkW%_J4ShbytgExNC6WHHR9RfPLnjhmNIQ= zWafD4Ug7uBsp?)49S(dmqbP(gf)B-Oo}(0yejlwKQ<0Pmrp{P!`U`3l& z`*DH5vAlGm^Q$-JzyIF8^Nsrg7I%^^+@eK$kOi;^Iy*`D1Lc~#<)0+-G_??9?OcWH#TC+R%* zKH2L&WB4Z+8m-tnEm@7&$un5z|1M=%YM&U24l~-+I#B!N-OAdsl_!T`a{I~Gbi$$Y zz+r$=Ol;ZIAVRXrX!9vjN zmudf~;f#4HGj5PfcUz8uFu=Z8nk$o8G>7CKpi}G%y<1Ui($LEcz^Rtivj3hbIF3}0 zkK^{TgHwD+T^6fCe}BoYB{W(|R~dd~7QX!^+R4NHe(0E!GSV53p_1qInuqf_tElX% zW+)NWHm@CVB04IS{*WC*BZLpt7KYB_jqiVAWUZ!Hh+amvYaHY0h{wb61Vg+z9?GY*H(9XooMfazk6_Ab%WYGN$T=;Sq>jo|ryk7}@H3n1YXsbD|w! z7uaBTGDude;&~PBlCmQm|0PKQl5Xy9*>PV-jTz&g#Gvay3MR4&@J~7HEo6dR}@&|hVy>#iV&0 zS=GpO!ExLw;?Ps!aJ@XlyfnM-%c9`0#n|_HOD{0>6ZBth{&Z0y_#7D5c0B{K{0aDS zQVTzAML!sI*CcLMz%%Uph=(4q=4hUnK+$qxeQ3(v&Bf-M+ZHb;TH5wGYzH8lY>;L7K zXn=yfn8HZRUlk_hPu!0Z=E~DcT_9YA9qAl>SxN#|uFnLB9y&!~A}^!M>^WZ1ja8u! zJA$~FF03biI~{8hvEQm!{aJ4qs~VHD21C=mE4&M<#_lUSf9(Nu{EM`r5EqCb-G5ZO z-HOof8X77r=E&6mN?!*gVe)|9&NpqZEf}5NGo9zp47^}Osl*>C%CpG2oo%c&o}N_&&^0vZ@NKTN(rksFmqOs{*@=ye{}Laa@f zq!U$qzc({S#hebfEhcF+Jge2lQ%HE$gHucGDJp(Iv4W76tbNFP>VD_q2{wZ_j(pQ9=>g3?X-@EVu~Pu39-=j3Oa)Z-(Fd@_V#f< z57kfs{{L0Vl!~znZ842NkO1a4&jO1(fi3I3LP;tXA#1EfWwCvQV9e&yXe;=&*@lkD z@*fUb(eLR6O%^#Ad`hNDwAsgQ2?GRQ`V;&*@6&D1m`;DIeLD z({34X7U2>t2Rm#g27UGPBigJo$Iy%yaUKwr=akW~w}xUW{ggF4l`e5QkR0UhrTrgE zDM7})m7)YGn62D%1#DE7sdMNLEs4h!Yj|*wKF)uv8M(cL+~`vcTFBT#n-Y4)+M)9% zA}|HoX|m8dZLK;xf6l$CZNl;IH^-Nu35d;47A`E&NDuEYyK7J8t1hDjo}RS3f06EO z?x`5!HFHp!o{*Sfql{}TunFd=m7#TeiET^CrFI~<5zrc0d13`4*F=FS~s zrSYQxUZO{RCD+&)*_gWCwo3m z5bFkzt>5&|bUc|XF_I#{%nsvxGjd!~>>;YYUB&nD;DF<&GS0dhl038u1#}avf-thl zQq%vvg4U^}vN&_b`?UGfYxRq3X2Jb%F}V<@GgKSmR`?YDl1QMCZy^K0F+2#5zh(oj zAxdMI$k2yzzqU4w=|h!4IMf>af$<(^`>vT@Wr@9@%ibGgb@OTw zOusmcGeFp<{fegCAcYegIZSm>vM@*D)F=cyTRQ&>sN`Fa|9XDIEZ9#sKEcKdJ?;P} z0Jz=!o5ywb)KdjdKTXN3j4fvki2{~rsVRJ;5O1yTp~W}u-(|*QT5+FB&R%%Mhx0`r zA0FW#LYOB)`kF1WL?Ju7eeRexM`Hfbij#4h>MxI87f#fdzY)AjKef6d?`Dv5Za01$ zZfF_A48GeTgVZ_d@|`s}lYbkaH1Zf?iH4CEe}11>IBp@Pq~;TFmHd4pD$FJNlu`^g zzp6ZRc?!b@3}tcFIv{$WCfnY1MR8JU4XBry6Y9swJOTMe=!9)8wE*ov4szy!QOf_S zeBO=4Z2!#TYhpJ&)dmtJ{;R>jVFwxn@M+Gj^P5K?0O-FyVr+b>ft#q;6j#gbRN5Zi z$~k`ZmeA@@<6^MQ8rv=?aucrhw$d7=@DQ^Ucz{`Qh_|c~f3GWqCumY(zs}TY;gphU zpJGm&Xn=G|dq?AG+21??(Cz{le{$Lk+W(m_5GJO&_13EzYP>{ z+5XRJr&1^}DQAcLf>7CAvR--;~E?r?qb7gWXPxCGrf&-=8QY zk+8v7AiTwfxIqaQ8nM$ax7tn~yK5xpOY_{Q3G;}wiA{Ba;{F)rM-MLK6q9zpY8G+JS2(j%^a58UE4!SuA>?h z4O;OFVqTEvLng0&x%D;t+{hkF|I3DtdOg$~y)FKpS}OB+E%AAo_l0Tmgj@|Ow(-#P z-UgQIGZpMk*88?Tb?$9yI68a0elguzH?Dq;`hG7ZCpV`QSy{y7)`ii*P&Kj;Q$bpvwsLC3T=8V$7o zu7t)+H6w11vYh!pS)8b7*}h7^lbr0tmgn)+spyu+$kMAw@kTd3%&E9^O>=t_y#9@2 zYV6%fF|JgH)>!})l_=Q`{BsM-as;mRKxbmY-+DCm_YHk5{_81KP0Wz zRaBt^m7hvp9pJvQRQ79)KYbzK@j`|P#4c0RKBd<2yZa4i?s3O|M%;2NdX36@tY3e! z{whMgJ(lCDx5XmgUi{8g2DuN|57;kq7NU0KafFMvH#F@M4U%hk3VHb*V_|gR#p@uB z&?3WjL)RN`|7^!mpGSAnl0uk=bYdv zpoO5wNO3iL!guR zZ~t+1jf-=yt^eg{PS{A3e@BmX@}i=2^_g2*GCbcD4Qqawh_HEk8KzJ7)#6bD@Ew}1 z7Q3fg7j#CoID#?hmlt(Ak_JLWeqF|}_mG?HjIN};UxO;+{DA|HyWX&T)-MbhO3^#p ze)B1Ew$TEY#pMT0&40oeed*h4#xhBN;GESdc$^{_V83wPv)b8(NN6=dz%DP1Pr{A!;gwf6ojHi!!T5Kr#dDqFk{^+&9Q*b-Ka zYyvU*t>f5N&*eFFWZ<#ZasoWKvNJRq?vPEb4|-ToQbQ$X!SzmHq`sM`JR-09-_d`` z`cPM|)9oU_gn_^8`W|qmEg4>)ZsLU^IhDw!s-8Y>7cZNLa^DL5{9XI(WhgA1t!S zCb;a*&L?M{X;ywQw<)H;soHH8YU#{cO}9Xwr%8=A<1}D;^=*)}EwfLpK|Em40-8au zG3n{1rV%dvt7AF3k3v3JFVxo{g2A3KS^NuE9(r7#i>PeBj2ggV6OGgxH2CgStd6~0J)ih6`8&Uv|B^v~$@X^I2tKCfh$<3_xp;1Wfy6zv$wX$I7K^&QJq}dN z8L*SkQz-S5lf&t^a8>$wJ&e%WeLf-y-s-28bf|B5<=MU6>dgFbGJo156Y>Ee5_vpf zkuf{l^o`xy_7q;Ol5CGHdVywXeww$VT#BuyNn03>M2P4L;WA!t9=wsiuEB%+ff6Gqe*JW}Xno zk$BlB62gOrcfac*aqgUCd?b51RElCV*Q%~*Pg3|6dcS~;trkS*)qS`9XnLFOk)*MS za*KtWzFat8mM;rAa)FS+HTE?k5ebQC7f9k$DcnH5hDS%pE%e`Yz)w#|2k9&6z4re^ zLXD0SS4OVV$c-Xvc$P{DWm?-N`L91@)*wRdH!uj%uR$|03fMG#1^=Cx9J=*up^f}Z z;w$@mfh|?VLdV^wLCOy!3X7tQA7?{KHkBYs0x&I~opbxx3fMhW|CyxVWY%6+*M#jK z(c6OLXX09@0Bt)%FP{KNoj19nr#X28PG>}gO!WA(<^BdqL6O9y{14OS0{voj`N^E; zLNG(QMY+L^8d^eJHDo#c$@aiV#eb*zT~bncXU=LMlw5OHIvOu(VTBQ^MGEJ_a3~di zM6n)*Qc*CRsq^!xt8YifLre_C@f5f*8@1`EXBC7Wi5{v++9;C&?%eN`87uh=g+?E| z@y(MwV(X@HKJWb=!@n^yjyZU|6{oJ8^C2(yCex!{hOKmBWJtk~+!4tE_w6k0b4~{_VT1?y!JZyMe)C zrN>qHEuX!bJx+@Q2ezO14@jqoCwZ;>qHV?($h12`n(Z_4Ad?-Xaeuoejs20_)pkd2 z>sDuNbo4f!)%pv@sULK_Fr$B#0=4ByV#ty`#R4QvURlnF7tnT z6CINlFM(f*`Spcr17|ixN3KZj9b3v_DyFS0bSP4b(Ee);m)e*dSZeu{j6va0V%-x! zph(PPkuifM4D)F1F6N{ar)?OU(AHgX(h8t6|9uIbIs9sKeJ~HZZwqWlS=>aHBEH}; zC?^!3d})5{@0Iq*uOV%B|9wH+CKstOZhA9Cl6n%&X^4-DC?l+RX^eC9aCVPJ<^sR8 zU5o&s?8&H|4w+jH1MUri6AdaoWz^yOpR*q}AG*|6I=u6i5q`|UYsjNlaK=t_#3uNC z-OF#IZ#nY6SdoVM1MCqIZJKae#}acZ9@^YLjrgDCd{E=3#|Pombw@5S9@_zxMS_JA z@VNAAM7`s&83jD0qwD@LO`3J$Yy|{-yis=F-EuO9N&Tc%jp8BDwUMMR2l&`U6scZ9 zq+4frG@6xZ7e=`Bkp~yLTT*^~XT=P~wX6&h+TcRlDMu*pbJ;|QWF*%eOhPJXLNRZU z-Vda|Z0ntVe1FEUjGna@tS}PP>P-19@1K?VM(AKso+!RWN5VvHJdn%63RA`4&f2Ch(x3GTy%8Fc5uIRA=KwA(<^svf)DG8vmRP^@JOfrBz2?DWD4R_3j=>jkiU7sW@|z`(^UrR(A9G5^KWJk{-{&Jp~yta}2GTmD`}`UcdkDUs2~xS6>1$ariu1xCg6 zU~gK@e!!`Jgb;&U7X zy5V1s2nLYBI>dq)*^DGTqlk&SeoFSlP9*f@T{fa8Q1JWUt%3Ax6pSSifhlzQUyuMeKvVJ~P&Fh~OifIK>HxlaYCXb!>ZPW{4j@Mj*EpPpwD*zsb2vebTt!F@4G5l(cX( z3&-Z*yp3u98E4mSop1W$f%8#2=OM%+@6Z8Lv${eiO3a}se6}rZs+RsL$Ayvbp`H$- zkatZz_e5M%_BMG~ZKESd2=x?;N{!r83b+a$5(JaVi&6-l2MdlqLL|}@N8u?ntFfi{ zgC07h5ZeVAiHIx|SQSn_cnoYz)6eYz2O*?Vw<5x8PWDx2W@6vCg;x1Xur&gdxo zSmlON2K0y9fI+XPIjL3=HGn}6TblKqrLlPAW5uuxO)`Xxv}ErSYl^ zvQQKgb?hIM6TLZ4dYnRbh(r7nqBbvI{vA+>C3MWR@VL&^dpJe#hUo3Hp~LNpkvj{g zOcy*iFWqca`BPT_l=gQbhHjnv7lec`Sv_)98hWR zjVEWq*xhDds|Hee#^h3Orq3pBzUNjv%;K>Xa%COyjvHJbIOecY@g9>jFtbsp10QyG zk}xK?$nq1zOD$ZgZu4VMLax2?GSJ6O3^?qmGym6QKBYRAegx4`w*gI9cMrt)GR@QZ zh0^vQ$q|r@_1lodo?H^{%MD$g-riPm_i`t7SW((es6o1u0=tf~a*VZ^E)30`_of|? zEO>;P?j#vi=S@5?@7kR^Q-5%}!rZQ+w?iN}b9md5kqexhMaU5ZmdmZLZQ&G6(uQAm zX1kvG*5L$hJ@X67GAgZjp(%9Us|59Sq!^6*h4;QJBHG?PGoSl)WmRYwM=#ZJ*pr3O zSGgQ8p?Tsw`+r;P4o3>mfYbF!bQhSji??FU%}z;65s7FaGC%-tsPel`e}NS=-s`zE z=}c3erWAav8tS~#0PSCZn(Na4I3OQkqW}oEb#?n!j`bvZP-?>T$4ROsa;vUr@g=&3BcHgXq2V*o=V@yWft|IPV~F-o)#_gtZA+%}(qe4mqv{g#BU}f(MQ-%cEC)wkFyYUPXX? zHFC-{15NAb`bL@7EswvDspigXf)nuQ-(=oo=;}(P_>ik#k=LgyTM5&NLijQauZ#(N zeW0tAT)Ae$Y83t7MK>^e^Qb{oBNQ%^qKTCo~(+e-ovG7~In-m1}JbMj+e=kPZ;IW`s&D5?;!wH(S__awv$Evs{_{&AJ54wSY z3^HTPfqdQ#$AE*-HJRMc6^6R0W+^w+`bw723|dmDgy8&7rd5dRD>)>9vl=~26qrEI zqWx?qRa~ZL5oxim52gX<7&~~N_HFu{Hvn~8)IL-AIcxFK1NYrX2$X9eni|KY`!Bpf z^3T77qOnJ4IPhX?{9q&rKixdo!^sEX>v@%V@9{8!sNxPlDW6cW#?B6@B}HoWOegw@ zf51VM?=Yuuf)5l4n1f%AEQAdjhMD++Lpedppph`-#KO^nRVzJsnY@WT`hF4%Sz4J( zhGI{Za`WH$2ovr$oCl=(OL{(_B)neaQmKN^NatH3H2 z@>x`Fn+KLf*r? z+A^l^=!J4WLFJf8@6pN(c(zRX`Hl61(@wqx8QqnuSrVrH55o-U#pH%a`jEX~@=QKO z915+Rub_f`q`_lWy8H0IiwP#!a^lYX$zQ&6Ly4h?0IAfrsCc7tCe%HGy9!m5F7CeY zZl+UnxJT__IntSf=z{Kr&?IRRE-pGeU|Z9YRvoMaSpe0i`UJwq4TfBf;ekT95KX$| zsdPWB7G zx({e3gtQN4{ssfuk{%AtlBVdmv7on%;Q-w|XKXM69@;Bc>UnWM=Gv%axI-uC)2EQ> zA4O{CNyg&%fc}?9SLIeDhkJAmo9-*xv=tx3TcSxMwWsr89=e=&p`OgP_>OcQf+bfL z(%+%;Bs(lMLKG~AZnRxmoHx`0ZR3FE5wZv7)#p^B6Lf#PxBcwXQf-(=o+YpG=Jc6e z@h$w7Q)o?P44@T!uAI!9hi-AhuxIm;qH-w65OnafKVF0eBi#=%>HVceSwE#PvE^$R z#73u3F1oYj+sg^g3RO%FM;Yx`mFqME;!c@fxI5E~Hx34>_!MIQ-XBje zgdDIXRw)0wdh2DPcm1j@MaQkxS{JLE(^?bvi>P&L*y^X3c{{LfUV90YwB8ywUv(D) zaQ4Pz%z%kB?t>fvsBC!bdB!NyFQY?NtoI9@2#MxLE&OUpgdY0}RH1f;_v!_=(WQP%)RINI@rlwUJux>Yo)`y>+{t)_-u)71^PQ5pjOyClBitZ2-2PP(+k ze`Y7HDyIHsZZT+I9p~?XB=TxtlbC}Af`u+fAW%)6ZgLQSgUyfre93B}NqZ8>k@Dnj z51E(R8ioZQ^NEUdzEGgkT2!VOxg*u8r7Np_k<{E^s^E~;4Xaan=mpcSvh)H8>1y2? zW!w`V5&B*>g<%nucM_12TzxzGU+Ixs^wVs#M!zGYJ+Fa)#B$eEjv2tbM$Iy28EM{BQibf5!}0{2KMTZ9Qt&0i@llgIjOQo@cC4B9^{YejQ1}0Q zN$WFkFz{!qQ~LB|uG>aHG}x(;p8k-zB5h#2)4zo8Sm;s^n=uyCv>~QIrgvMVXo$u& zf1`mA!OKU-1-ihV9vPaJloyXVk+?hRQT}h-$UEM_cW8bLDCNnuD!F?1&;7t{d_Pt5 zU)ggHp0N}v;=P>li82&=)kpxv{DS)2eEFJR^h2=2He~|Km&0xt22E2uo%5-0iv%qI zYSi|yG4}6tr`c^Ebh<<8Wl|jDkxa%ht^LqZd9yo#WPd?SDlN2yCgJhu3-bp@ym=&Z zEU(R)$Hj!5-Dm@`W+SqIkYm0>dkX{P78=O#7n_k^UQuuWT9cq={i%+46~pQ`G|Go~ zhs!ArN9jgh4HH&`K%8*cIU#g(zlVZ@X1v4zVJBTJIjZEmabaOArZ96#Q*;uIPR+s0 z_0}zZd4~zJgK0e}VFI7+pp@(z`%a%;C$p@{GTTmF)gmj*n zv%HU^qImECw^-@Mcw-n5_A)pXGf`E%7M$Ez{>nFHd*TFWm|SWVqAZ_emDG%V;o@J; z;-Ht%9@>IM;a=;CFoIAYd?6*NnL0uiNFh)2Yx)*s_?E@80UtO<{rD|S%H9(xb)i>n z{8NX6b4`2jUC z4Oimz_qk z1N!?9e)ohAP+oLTg?eoN#zvBSg#Vp~7$ANd9{*l1Q*BV~92O3WxV;gPjGi3*QH_m86NfF1rs6xQTA+%V&Prj2dd?$_^%@bcKF@4rx<=^ zsb7LDrC;5V^ynw)X(4XSL5Cq88(Ko8URfpSS>jW$EFa`bz>Lp>Wpv!BqKhWu%4AF( z^|4a2VWAOoKjJ(#&28jNm>FJlQn30gy>XLqW#`IpGd-3txj2L4nR)3wZG{-4{7<3; z@EPvnZ*s>jzp-*#-cteKe|DASVl-a{P7}h1s-he?av)ajQc*{^%?f5`2HdXizh#hiigM(1*#;_lN~Nryi>m^VHNZ zu+Ij()ldmjP$GCZyELN6^GxR_g^|DG+|cnU{9W>k$2h`zU`l>Z)on)oo~(4|*Ug?} zeSb|e-$+;gKj5YbBE!z7uc$8gD@cJf@G^U|98 zRB1Y+6v`A9tB`+w zopt4<(86$l4B<|8_!DDFGs-I&K5Z%VSZ^mx{TNT-UD)s$ZZ-OyF;2o3>AZ#SZ+1hu zSdFZ2I{-m_0`JL}P2|s6)XVI8JC24vmi|Sk>5x-L(L4q+jtNDd^R`10TOgX)?{?r* z+A`*yo>6&go?Xn;i&1SZ!;{}zlXSu$!p+%Y-F&xjdAmmu2$@bW>5@-W{nvkC>x`q_ z{gVbdZa-8^;IqFFc<+;po&~a-=rz_jD2 zwWe-mNTq+U+{-OmjKJ|{`oxJbV;zwmMe0yfbT@+vy=xH7oxgpi$Dt`WF^x%Unow1| zMBr`nXlD=|)I}dNU`T2CG%Ud@4^e0KxuJ-dR>B_~s^7Yd%1{>{Fs?(v<9|TkK}2Sm zz9N_kTTYiIJ;83rDw56err@T`RVqFuMQ>_vxxAb3kaiF^&Txaeyg z;)9O6@~O6L*_v3#E%!^GN~_DJ)f=ixWM7%UJvciWJ|%eGE_mKmvHPYYBh(R__ymV- zOAC5jAhW`>oJ6ZW)T*@m-z zPe{5&W4x!cs0YASbJOeZt1$okb2CgrzJVt>|6D1V&1tOU6IEPJtdxNrS||WF;ko=k zPfVoC3HLM!4@;bj2$7nsb67Cj`3_-@3r`XsE&w(`?EGFSEIv>zQZ|{3)?s zk3~T4?CN6e-n5$5;$uUvbH8?Yh&7msDErFQ@d7`O58q$dZi;2zN0<~C(2}&C`dtqT zmd8EVVW}W=U9iDx*6|y#^JhVl0Ys^@+mh61wD7UgJ>HYFx8a^;rEw=Ec*{Vq3%6 zn@0!Nhj3bkymx{ggewI~NUJ1txv6dFK8`%9xLkCsycqwGP45%H;+yvS&T zxrka)^SI2Hq0li6e{(JjKtmmV!W2*}uoy!EZ}H59epmMAcQ3|jlEN8UR+9n#(W*>f zt_&zyQqeRimU82cQ3S;5{KO;_v`QfAW;78tI~i_ai%mFJ2IQz2Mww`fOmW)+TawpR z?4G8|*9pe`M?J3`8+MryUZC*Ti(uSDwqoc3H?F%GnTz&83dMgVaPsm6f_6ScV=URB zGfoALSlGvo)mJ+T#ZJc52N=pFpJo(N2{-Q8mv6Ll`6#F7t4Q-kxs{<^fO#hc2US2k zmF$j#vU8kef5moTJK*G}OgFOls&P{jmy>>5WZYdc5yRvU=rX8MI@dj58^BwmC+N|4 zXZ}Q;XtgT$XMv^8X$AjC@;`-XyBB^JXj)^D`_HPRDA%I=&lfZkN)>X@6x|Z3mGNCvJ#Rru1UCB3b*}`xH=9wHME#LzAx`|{XX?!GH>ugyd?lqw zuDCaBo9@di5ilJ==Qbd+#hUjFLMzh}*fM|r&owP{IkTlMXSZe0?K#M=)FzqHkq zsj6>}|6_VXBY4OlA(7|ZV~kr>A{+B#2VuV~x7yt&JR%kiA;D9CVgjMYFE&1pTYz}3 z&e*%KxThYE){D?4)0J*Nb3s#E6o;VkkC>ki!q2h;>iH!v$1=F5^`6UyC1N|B)cdRG zj1UA;;hWc@dE|*WaP!l7t~~!ES(YI1pw!XUn0ErE@;-rAoaEIcSwqY!#^+Uf_dU;k z@iI@3qY-bC(EgA<99ZiSU<~WF(Q@j|kyd0>4QpnpM)nDlz$?6)e(pdU&S-IpjA>53 zWQ57$t!MJ@5iZ%XA`@j=(k2}M+$!@IUTxPbo}ac8_Ia($=gcANQtQ0}j#nu($k@ZF9+Cbanih$v#hfho(Sp~`OY5SJM7t)nMjJN4ag={X)f+^&O>yE{< z1KY=xuX$BnDs{i^{W2KYVhc}!@xL>$260kTCZ?m4cO-I>~Eym|2~l)dt}SM zE7>>(MB@Emz)}DK=?@+A+T1-X{Ry1x;{k#{FCQ3kBoZRz!IWNc6N8af;kLkUXJ${)a z9!`=-k4FlK7`c8D($`k7+DD>yO<_!S7}EjvcqQ94855V4yH=gYu)x^~-s&JIV6#Pz zdVxdH1X@A6PRqwqEOOLvk4jHVoXV$3S{EF_U-ExGzRJYZV&kRQcbLWtUabR_inFb; z$ZSwrnU&rBMB|t**n`gcI*o2t($?J((lma3=0w_L%2n;hVvMzlPILC7+gb0=8Z2xZ z_&WV)rEw{Hlgr5n>B$R1685>yRYNr4EMJmpY3mriCAdu$AYW8!X_2w~bZ`vFFNTXi(Qyoc1(~Y)| zhhdYtfX3+6y695xg!h6QJLu2RHlZ#=fSr+vN`^VY8Vc3{gx&Ey@z_?b`PUCX@Qz*Ke z;ay~?Zj{bXXuhjm2$MUYZ?2~M>*oDIeGBt7(!cO!iwX%X@gy)?i!p}r9{_DRk-6g5b7S~=4l0%hfp>$x9uf})TMqCQG?ro)i#H1!!@Ys4G`$YxP=MqKA zDtURn&(K3Z7`xWdu~mHSL3oOKyiKDg9KkCMW*9XG!S_ZWT795$)>o1V_nbUA+fcWV zwOkKQ>3E&dL>XuLX}AA?z*Q>vs3(7ok*A5v0j^ZGz-v%|z51j{ejbX5JY!9ig?WYq&1NF>z^ZXA)^j7Q;f%nTft}QRfIg~u<7ueT zWp1C}H-X!%8af@J`Ct<{5YOe7NII$jv@khQIW~E=J>bo+U>Of=Q3SXTE{m&e*;zC{ z|5_0^txo(MWa;M#R_d=tTco0wKrLe!eFS02{vUwIvHeK}ex3A-}EgC&PuyWKsvP|i#*$02Z&~=~f z?~QfdE=J@VIHi4-JPcxa%uk{{CwcsnW0gN+(RERgvFKlsJMe{ODS5}|{8_j>?bC~~X1W#hxAOh$U%D8I zx@jRU1-9%dB2QB4fe`wNA0K!EhS&_gLLbWab^D<0v3xSlcm6~8{wz%llB-hWt5Ruj zcaD?-)8-cm+jTT4;&Umz*n7wN{vM(1&JJ{k&Bor(h%4w6|Ir6Cgwh4y-B2mT)X-@Q z0rDLt+ZU-sUtd%J>{lfIR|+Bp3vG^{tczChiAIH8lTL4?=By|WzY;fn>DXuV2lHdT zR)A8zHV#4w;J!l@auR*2=0db$9qx99;(6WMO`!~;zkPEBUt829g3>rD+MyQQZgXZ8-fGrk zEb|s7FIncsY`5iKFG}MHUJ0(&*;iH$ZiIIuzYny>4!bK`ToNB zv9zP{GAJ8iP?6^&^CY9rb@AASqlEMOmXGpFyK>^GX?suq<0(olBX;Pn?dT0kKp0e{ z*3PH-wrv9UaNU}S@5O)Od^sy)3Oc%zt}WCb2iE`kzj&Ca6W>ufMel&8c5WbR3Dz=v zTqc#XBlPw?Gd1*(faJ5DjzeT+k+Q*Koyq4VM<}oiqaCC7=<$jRFPksKW6#Q zi9XWn6mtL)Vb>c^ETAB*11|9OES1f_38K46Ag|u-`S5S?~#TL@^H_3HmL) z8}NS|on=^)ZySd}NF$!)$T3p7L!@D(h;%A!Gzh|gAxMXGilB&;NJ>gb zmq^I_{NLm73!n60k9+R>x_-a&Y-NmJZ>jQZ^YFwW5%V0@bJ`m~`J~0V(jM#L;|-Fc z0e42X`hQ4|quTpI6_x&J%{)4|{XVqdbvDp?A6CHuyiMAG;ESI<;}Apa%L3%woHiH_ z++7Zu{)ta+IjR83ae|O4+g{^+t_9ui>1~!}@_pg;59kF=FGfyWj$9OBN=hjsCon3d zIg{G8yrwT~a}AMWgop2c)TWD=e1Zj;eoSL~2nqN|g~zXNx`nZ(_|(G~KnV-)zQqCU z$YR$L=J(2v2AB5EMsQ#QuaE7sudzS6*dulKmpy^Ust|Ku|868{l|NCEHkS3iIw4p# zlR#Gw?s=zXJ)YuU#ox)TwSDg?a_{YtwhyoE0H#;l0`#?&ebs4l(hE?UVq1C~C965m z=|%-@?B!#AQ0E*3A4UzU0gH?55dbIFoG*iV%8fl{4XuHm6Y- zPi>*}6v!JE5~e@ftm3?_ow5H#KGyEQx&+_qxX)IhEj27HfR^CFd2eZNl(mkgk@9v{ z>E}hHoADS=>7vXHGdQ5}KjL4M871CNPoV~(xhIj5-|3o?HbYJTloyLgLA^FGbzh1Z z3hf&7EGRpofbPj~*4cs0&x-01o+0&s&ceAvwtxy7I^%qT>R>n+@a@1Wm@*a~n4(5E z$`|eqK=CWk$VyjAq2E;9-luvaWuKV<>H0EY9!=2mO?$2g{cwwyiXMo?R3YDLV};0x z@`(%tMql4~?>yGc2H}D(+Vp1ayyHS)dlzeZ_Zh?fc1LN08GF=BjuCDV(>Zbms;{SF zrgN6-1_3T%2eNJF{WA9ZF9|!d1T(ki03u341Lw$xu`Qn3dfiuBC0Ht8P;|3Jab&v z_$36)JAO0jBp&Aui~c_ad=~H!bKu-J8zqQph8w0-r=yc2S|{~dJq!JUP62U)zY3)& zqi89Es^NT(G7qj|X>F`VekrPQz3hhwK=xE62uQR-h-WzGHg_a;e1YJ?Ls~Fb^KGQO zvR&lkxCARu6*9pu(xkHCb0H5=3wQdQ| zG@{8Zk$U@vM42D9YK4dX7yrFo00&4zqDyYo*`qz=oAKpc(9U!{CI1D|bb59PAj^x7 zKg%vabtCV5v=#^ujtsh>Cp>KCg31_Jv~4X4scARZ6l@FqPQMmaLQqisR|r1zKLP4u z#9+z8mOxViTkJ}2DZWVf<{gv}T@P^WJ%87F2X;O$&1PnQ$r9zmddO7x;W6i8j8Ipr z?*pp=SfKUrVg;oNwio=)iyF~$pzKJ~I=0v{N*@e%$yzolFrg7G;Ej@0un2dr>=B zkhri`QJS&>>=zh}spvjlDQp;1ky`d~l?~|WG+%Q;qNvy4U!-D6bObn!v1i{&lUG+d zKPeBYA$Fw)+0(y@4)7FL@ksrM3_9Kod{#NK5dG^1y@VEzH$U0-<2r@2>8Kf*M}t|3 zCr2E|6|aT56^wYZO$!&^6-I#K8xtgbWku5e^n8u(qy}G!Z+yUo(9S>2SSt9YQ%9M! z(8rCHR7>l@ULx^HBC~D%UhL|Y)yAa{ZzUnvd|Q~j6l5&>BRHR^4rI_%Gy7XeInsu9 z4HKcu@jRsf*>)=-FKg&4@#AJ^awg)U`SxAV&F6XqBX*+ZYabK#E1Q|y*FS$Phx4%p6_yR2+ z_)6MeVaH>hS?>WH3EIM@^TC{dKD0^J>iNJSA37xbl7#o`&z6)SEQevb)x+2zCkdmU zxn+5jF3_OoW)xKB$;zaRsUeFrz2;5PMbTj-RqB2F_}f%U>?d%lr~ZE&KTc2N zL1%64crklJ-Ek+dAL$_6Ova@8I zm_S?ernfV2wsJ5lWlq@9La5D5)D)L5`=Wd`yl9G7!5nG*y%x|WNeMul3XmRRx@@W9 z&A!poMa~`Zg^k~je*22-@`2q6ep(%OLu)bnk-hfP{Vp_< zi7YsF(`;C&asx$V6?|_Gkv-&L$k#cAf!)cKWTdr*Vwp&IvnM!-8irG;>ARqNyfSw2vk20$m*8O z#M}>O1cV$l??@v-s}nU)kF2t8Wu;yqy8$d-1kSeex-qblwHg}Y!-&_&%b0%H`Dd9Z z1m}s>0;h<9>iGFa#KsOj$$K7Z^X*Q#pa)iHRGu(LH4r;y?}i!`x9x|52?o| zx^}8UKUO87#RBE|=c}eMGl$>1w$A>nsGK5JFDqCS0v(HalT1&8CZAiJdGN;@5v2S+ ztR4|}kQd5yegnHNz*mNx(0`KxQ!^5uMXMG|R9m=f$DU5z3&boIynUvCDI7r??eTVg zQ+S-W(kwbT@OubrRT%^KP30dpnBB`^NfX6(r0eOBCd<|i?QrqZXBEmHunjoaX&opo zL~0io1Fzl3gOoKt>luXl-b}U+crb%WVQ1o#?NNF{3*t>v=LT~pufS!T%rRi_?LyRL7K->)Bf)W$je z_aS>dKWpixfcBc++!_b*>Ll#xF#Wq#8f&N}je2{(^+0T`&vbjAr$CR-1^+Cj>O;{J$={j>efW`yDRT6J{Yde`g|qcEpU5&%1XyjdE?bCYuGrE1K8V}c=d1( zK>g?DawMx5ux^=?s<=f`iyyhWEwfDyqzIX3iQ6&KPR2@QKUEOXZc>kOi)?lL&Q8dW zHAVQi3A>nUhV?V*Jqk8qsb?zmB==XM`3!STrSMK@n22dX!9YTvv}3DEV~!Z+$0iTI zVZ(T+yxq#1k`5eI$Nq6g6?|(nQs!s#A^Uei5pGl-@cPArCOOq`?*~srx=SLB6KDFy z5-(2!1`IsTev2-{>Wr(fJVh}-BmYH-sA}A2_-3x9AyUwkASwwm8j-@X86_ikbS5p@ zPYnKc#+r08)ODhfpfef~HBVJV1YaSFMm>M>H_H#Bsfh@pwX57R-kPb{;_IWPuw4F! zOkQpU@@$>F7Wb{eB7>t;3Z>~4L9Wj)5w}NJhV6Ea)`6ziNcdhd;pk=1(T!r}L*&SEe zwAEmE&Zr-$!tS^E51IdL7weOvy%NbMXBfhh(*P9oagnlG*XW7s<TorBY_SD?XAOCm0GO0N~A-30Bkx9_KHHL^vxT=vYIg5aH2{8Yd z_3U5!m~B&b-D`NGDTzONBnuqHkDvIo|F-`8&C0!?c9on5_CAy1KeLa`G0Y`8GZ|B; zZaqE@uE@{h>hzjP#z>|H5fiFJKYl4%ltgH`ce&2@-zz&mUj`+{gJ75XH9q zYR@gU=&PrE)B8Zkxf7Hy_<@{RaXxAw>%|Z_`B}OtOMcA2Kq_&d(tQNHcQ>6;=c}OZ zBj~VoYVD4SGHoSxaxcp@R61aDT6C1hdw3QcTK8F*R%tS`|Fy!t3DvK^nvz84_6DoI zumzk0GH_7;>EHu%qse5`tE%vecY~aK)CipBF-deGw5UPc7|U|EyN<#j|IfhkCkJ#T zwha#%)|TNb@N9KqUPsF-ugfKmNN~JzsC}q~OSx$X49*)0;R=y1YXu7p85|uoZFe0h z>aGbLtA1D9H4^^XiKrxBrEWq2LgZf9Y`?o4V*($tlCasKWcZii%Vo|PgzJ0^%brl*&gNISVQSr+t)~G*qjdWeh zzFX|JEMZg|3oLeN6IXJAzEnb!;8iR58kxj_*4n+`i-ZT_`20$!M zW7oZhk+cay;ap3ffOIb_xruKRsyXpnA&P#633g#c*h(1ab`|scVINi+GxR>_T8o!q zY<>_Y?~~R7R~0Kh0h0G^-5sWC@Q!HAvxF& zd&ImWqPNlX5ewu@PasBG+Ht*DLFNwW*cmD`YQA3u0tf;o686VK!P5R0eF4LF1j#F5mnLy1e-f(6;!fGM zvAumnhg#?S0t7{XZcV39W0E8UAHL51M z%F*?+M|9yX1%;Pw01|2U~uJG ztK*WpV!J;Dm};lj>=&O?gd^v({iifIFuCq)+cxJG!Mvf??duRmK)*ZE_ylGGqM%Z1NnJ*A9c()f5SQXs3+@*e#m-T`h8g>q|ses)^48y|21j<%)u+ffAtp* z{D00c7i&1Fad|)8TZ>Q-VU2hNb561*fUE#NiE5B4^V@<6!RsZ5ms5(n6!*zhNIOCG zJ($0~Lv%gw%40D-PzBc805W{}xmWEbBnw_^#BxkVAl7XnkGt!w;#i78NUtr+KDq;> z&S0|>EWEU#n}1L6I|Nf@`Zg%7tn=Gw@3EkpuI#W4VQ)w8g($_c=Q2rMozNB*G{8tB z$qXImu2DC#mBz%1%a#-iBT#tdfq+HvZ=1&8FYg5V#OJX(!n1CofQ(ftbsChm0^}|I zn$!uLPQ`AP+1W2n3cP^&K-GHYR+yPaD_U@L-q2!f^XSliNLkx^GOLL1Cyft$Mpn?L zvW-;9>A!xtPy2U7dkyh?}yL)uM#z{bEqg35!;70I$q*j26xGi1#=8njx?WO`Zn8CzZ z#&zut#OPgL+$QhF)MqFT4>N$>J<_p{(yoKEKop`ksKPJ%|40YnUfQm1psp#(-Z){y zRkREK8z$;LUiHj7;x@TdY)3m{-#i+)`tUVQKNcQUXu)?H!JZ^qM0XHq%c$8+6_f!> z8qF#|UPjm7QNl&bJzqF4$;G(=KJ4v*+H@nHPcVt736W=KqtCh}uTJ1!K2Lvy)?K^!bJm}2+unxmory40}p@0G*gLM5I&KChAw`GW=UH<(n8v#zH*iA zbYR4@I)x8#B>=;D`La)Dq;O%ur}Tvm*dnpRQR2gn1ivcvNEreHZcdk_&fdDHf;?COge%+7xP{ON@qZ*lj&`p>t*h%7hK=>D*;Rb~6-KU*^POu`#ww3V2 z;}Z;Dkokj#!!v+f>*(gaV~;u>z>Xikfe!c$YkOs(WH`LvHNczqRx(I=nJekk*=RF> zdIhg6=l%4d=R`CQ$#o^K+Kg5pK50|>ga*kk*9Rtb2Mpx5`3fr(p^q96r=|Kb})`UTcla-sYf7c|M+aRC&YI*C#8(vie6W(%w3O z0Gaora0e3|O2%6l^7uGJJcVQ?ZMSNEzl`4*Y%2K`Is|yvC1L*}0<5(?S)R{5NMNKf z`XyX8Ul!4U6cCabo%$@IpkY1CX+95rIU^9s=bT09ui**GvcC@_K+D#n2`iqD6nMpL z^?p_}I+%3pu9;X-x&!MrV%jf7c)*UiI&Tq|UtPp@m8uwlTI#j)X8PlEGprC7CRIfs zp03XcjqkNU*slZscL`6GIt5D-W;bc(h>SZ&1cMfSeQQwB)E^!QtT48KdVAM zvE;7suWIBebsAWo2F3Expe+-RrKxo|?Zh}3e9Zb%;uGegPzY(+d7 zKOo8gXpQDAHu9Ju@r>tRh^}@&C>OT+2@%O1mD^+K^QyAvR=t$N6JdeCSG`aLnFI#E zgwYbKi0$NZPplaalW=A{Ar{~-oWNI_ZQ>}9q<6VqEiPBwLTd;p{qg72k*St*F9Xm4 z=2=6$dHy%2x^d!lQAa;SuuPR)rHu9IvI|pZ(PgC$F!keS{qvn$+c742w$^?!*8ZpI zFUywbgVTWNdWu_F>H|11#LPvmPEB?zSt=W4HDsPYrQEdit2n{P8X%Is9v;|YzZRW( zQk><{uUaW@D@m8F-|ms$cAhT=;lZ4Nlq9I8Tdu6qI~~@)p;W|^+4aCA#jyK}E`w*lC75s>(K5b{$V7$Hz~fI8gP*W69w z@vGvz*js$XYod$RGi$Y)HXgL}kvwoWw-@CM0aoCZz0eo59d(bGTcjTwX8_!LQ6-P- zue#rkXx37jjNy?Lim{qLy171~OY$ zF%*QAe_WV#DIFizJa{66yg-QXo!xU>)(h{cKJRquGRc5_#zRINL&c6tEd+*5#{eSDeZ@LwMdYZLHAcpG6)cAY}SFZ()uDu|J?GiE+G$B zcrjlJ-&}vn%YxNjRqGW(f3TYB2pA6q(eI!8^eZiy0RD+oOg>W8B9!2qNCwi8vw^Oyz2`NuXqpG%jur@i^3%jZ`a!C(>t0-}HMAoAOjHd-2Tqs0NjoMU1Oxj%3%`zVT#kir6>`2g zW$vC}47rNiT@-+8T9^l-V=rti4269e#McZ5kWKK~QZ@hQB+`Nfyotw|U3a(#VMjW& zpbQsq;5czslucwK)$yP};=wsl>EXu&CLB7;sXJ#_7zv9g@LRpx9leiPC8ju24V@+4 zqyNl*jzencfAyBYQUjMZtLQ)LZ_*zYY3V9q>%&%<+biRCir>gXW8C?>w(5}CWXLHs zLW2b2V@Y%=-zi5>y;@C))oLovb5BjKo$hBP(OQeH2LB08?(8z=nF6@U0gSyTB++%s z?H42fkr3e1)VOYoGj*41I%QzO>evcMb7ktk7&w&#+Klre+d01gwzpW0=xLw&O=Wg6)>;!0;{zUz}MU0INf*f z7y1#XlpS19j%pEElyaN2RpFrp8U!m>f{8S6Ecwj(z!$wL3{!;~F-a3eC{cdMe;Or_>;_qTB@*ZI zyiSI?BYjk`P<|+e=@SeS{^#2Pavk#?m<(Zf5s#*I1U_tRCB%L(1J!&t!v)&7s=6oe zcE8Hr?Er;fS+WR#nEw)Vc5AI+FN3csdVytiA`kQI{pLzqd(-CMf9#jS933qjSzAIo zM={bxnPgIB%~J(wrK5sMAFRmOC$qr3RzhT>{sP>=@_9i`Puw3-yS#7)iRl`UtPGLT zyV@^?=&1%9?7)D4?1RBu5&!$Ej&ybOnt9TkC=SJR!2!ljj1YZm!`5q1`?HPTHqm39 z@q&)@TzrcEhA77Q!83>+F!srulv4%l2C1PGuw|H*7UsL%<+|YZ^LxCRYK(*Kjk31( z@1v*INgq3^9}A2VjZ^>>|2*u?w{bxyjSHq{4i7-|6CS6_PAU`pzpq z2&|rLxYtlH?a%0V`>mJ(fY0lu)Rmv^p+c^<(_MolcYmVr(h8K?xs~ksfJPt?nrMoY z&@>SBEseTwE)iN)Muow^rq|1InQ%yEleugO(JJIULxCK764*~J=nGTdc;qx+Q+G2^ zc`*)mKXh*;oa3&E#+N^7;&nC~4x^eRIeFBZ%5FYvz!5p|DsXN|@s+EvAC!!H5NZI= zO2sI$L;vn_yH@4i3pVz11j}q1>mGbCt-Oo4A1f7T?Ivb>0_$awdF^;n5%m}yz2r&w zSqbcjJu-;|r9R|>7>nNtgfCJ8v`=*%s?=)%Yul3DnD(Kvi%d{%pq3q%8BrJy$4{pwU$am_%#3|k60<;mNSy^juLGgq4bo>! zOHh0_bT@_(?qKM!s9yQ_+s{~hc`NyZmoLRyw);9!rvOX(I=ZalLDb9^`vBCc@~DFZ zsHn(WhZR*@7cp|!Rzr!d zWOf9a_rS898=9kVo?VJ?DxGkW5C@(CphrVgguKUK+!^^qO@qD`w0K7xU+_^p=8I9X zX?<0rWX;pA0prK`9Zya?@u1Thq0FxhUv~=|2~SnTX276SF!@MEm-jr7x;f=WxDnE~ z%84Dr))o47hz9y1y+0T`XU7{1R;od+u-F7&5iH~CLFPQomE*ZeWxiGF8L&Xz=4t63 zFm=?-MZ`oOzW{5$UlCH5(~`I*%IQjc*^3C(Nd{(d!ODDImT6MAlb7!yf1+N&Or=6f zlyL(1b9KKe2>(n()7 zLqSyNZsoj%Z4s3Bs7Gv`j-^7Px9zQTR^ zIh8sn%QoV5qRX9W1N)CVG zkJc+x^BCcv>!Udk+e@dv<=KR?7N}Hfv-5L91xq? zgiwj1$t2xXCy#z3Yn)x!wlM-RL*~3(iGT3CsD1zW~^gkYM10}YlYD%}nn()y6ZB^Be2 zhn+j7i3BNUtnu1{QHRX(KIUui98gCJ(8CFMfwBFa%6i85lCR>?p&8ciBkW;#mMBaF zcx@&$FHD}fys|=DZ|kQVSbu^Ue}YLy20eM1{qAWefdOCfy^fsB@U1(w@hhMUxf473 zg}#@spWq9xOiSK{{W@n-*-lh;1EH`0mA9Rx+fGe~20E%N!7ajE6!Bh<2g>Dh6-$x? zmly(Wq4=SR-%Fch}x zd>5yI%=TELNBwdX^fjLCe4Eg%m+mtch++wQ-!E94|M1^M+>uJ<^7c%o(-sf^Kb+8h z^KJ_r8r#5~wEP6rV!nHs$lC$pEc?KJfuvO){$|TkPY53T&fhA=LTjWqz6zaRY)ORR zZf1>-3O>BDrZB4Z`41Pqx_9%8opX%tp2At99#yY`ihzE*n3}fdm|F;%2TOc1SD&ts zFq~6X1g!~`Kaf=n-v+G9DyB;rf_cY??M!x?c?>4Ke3I9DTd^`^>m|^oQ22(+!EmeZ zaABc`W_<}K(oE-yOrDdVJ7BF(3Ocf zPTU`{y}D**67!oB+8!8{OX|IN(og7f9 zn5X_H7;m=~^v^u_>bN6wfPL#MwmUUj>&K&85qq*J5C_?AI`A5KZF^jWX4D}khIz(j zBV7|aCQ>&~FCesjI{&uj)innMJKt(9MeC;_!WdkbUN6Q2XAxL~mCdGhfu2*a}fcn3*sC4mLnw@@?|D;31aFyBtU1iB&a|$ zvr!w%QGfy!{BtjwBGkPTc3EI})%?a{$B*!lCQnKsA^6Mz8zy|v;>}MW@iWG7QAHbX zTr*mabNB0%%OA_Ut4NIFpT+8*r1^10jm!A*q7Q!TC|42w66oI(0~YE zotk){8_M-G$|A~5$N+vSnO@w$yH(F7b8bHL?(5>3IUp@WfL1|+hXMe~3^jrRmyWaK z659z6tBGc2skm#Q1wSvTblL9S^*T5hZxGp9Pu_k*T4R*sl8*S0KB=!vxEFk*J$NW|Ud_ zOms*!X25@qc?8BCsH7%*RFAJOQ%Ob}`!&nlZha-GKySl(;E8}uyicb?pbm9rP4Gm>;=Y?#oDDwSso=h;_kG+gZ_TssT8exs*o6A8^l zULs0?)aJNJH=%(*N>T75ee01~zu;rbC^-l)Ego6Bn$QCG!#1+Zp28f^lHlFV&nsjq zIPp?Hlkddnk;|zxetcRCL+aLB?j~d|$-_#PH}%moBKYzI_74_z9Pp@u4${En%e~Lo z%!Zp~b+iO}&zXYyR@g>zqTs%cZYovll!rI|RRd+6VZ=43wSN(#;cFpopyXH#tRJQ# zqw#oy$<%s6g?Nnj=(}L#=FGQ_X>k@}P7@LEU(?nqX=tzkw@IJbgS3^|n81V%kls5C zz(mfouzdTt)iHvNFB(2jOPCg$UiGi!A2sJkH3Qijc=&;0nu|F<67K&wX+TKP;DLJ- zDaokf;>Cmx)!JVl$tDX+N^u~qBqnYZ{^6WnZnAVnz4U8;%GZyJSRq14@IAD*F8e+Inv%Y+MI zIw@PHz**pe`(0+p>I8?zcFK{V7??C^s*Np8u1t*?JbrTc=gOR4UptNjOrMHCqcsK2 zqw1V5Q<JO~GLNNwc9o*BD=%*+c+1cvuf> zflu6PZ>4OU{GD{Z6W&1$IZskruVK|qL_-gh&iEylbF3N{CD$UPnI0R)>0SiOQe-JE zeoChjId-Oy**l9fy=y`&`38QUd|8(O1{S{CkrN>69{nepMTp!oj%26h$jx*HumP;IH+gN_(c2DGN%G zH>^A#5}s$bDiyjR__q-SUSuQ%QT*jM+x)5P0Wx{~*!-v->pqb)xnlmUq2KZF5GJ8a zm?4LdMybg+I?y*y|2#JuuUh!S^gp&<&%1Vt!zm7A?6Li)aYKxca{J{P5bNoe_XKZ9 zYvk4tS!729QR%w_S1I2XgR1o$OBMd8Ibo^x`o|XS#@^A7x5pNGj{!$R#%AjV^E|42 zBw#snR3SAZ#Uqsb+XI^%I%evaSf`A`jEE2&0@ssgY^5Ni2)Zd@40Fc(khX`wGPguY zpju1db@p|f-`mQ|MnV$-l1*$cRw68+`me78Tg3;dpI>%qr1wAMccV=NX6?ZC*w*P6 zULJq{i5ao(mv!nzg~U+>i_<$`L5^e{DZdm3s2>OoDX;raX)lw~5j;05-;ozo8SwGs z>jQRJp9F)G+Zu)G|1Xe~+MEKV<^?w)RlDl)mpjr2!43OvG!QNk1>ymJ`v`_ijKMiT zgjS%+9yl2QG8IR0aYu)nTa_5o-fD3KFzL~{YeU0cZHb$H7}kDJSAMUNw@p7r$`p4+v*3POf9C0R>K_+q_{PGbUHMrgs$ z>x8mw!TiN<+bC|8^eLao-J;T7=!G8rN|7dM)fWjRzoE;_A*tTp<%~f)AjrXU`IiGC z0tSYe34-btLhm_ekVwnNg+kxjDV_`klYYQ^6QL)-ac&P#}5s(gU@H68D4}!2Za4mrSMS zStBjo#}oeKQtK!rvRnUohT0OYn!=JD)W)D>A%j)^_e0#HbG^p3algmngGA9h%aG!n zC8}`iYWUqxr|cOpQO-L+yzQ(85V~&qpOLB(nzNdZ9Ag5Y*b77rENGx9FEC#s{xNjX_QNzn z3pyh2ipAaunh7*ZD4qE7EHVa(h%n@gJ8Djr3YYm9_b%w}XOS<3KksiwE#$B3z7jng zbwD3w9unecXW|=Jb|pRoyXbt02J;aQ*1H{pQnPgk zZNMOxEkL-p)d7mvdIQW5GX3l>5WArt3T9)1+)2J*MNA-KCMsS1*(*DAQMr1!4OMAd zJg@^7#_ap`SIc+L7|U#fcAk~fY2GcF66}~+5a;ltg^sSpPu0X(7LHDp<{af;%Mtm%1uAzHK z2b+503iM2t<>0i8j{wF39o}yTBI!cv-h9KQzKkUGvrop0 zAtPHhH;FQd1DWF#8<^#dW(=6_=h8CZ3)VU9KhzPX!nqqxl|Sx$n4I4RA?|^xox)}Y zFFy9L1cP4zMCJSKG5GTB#vfH8Byn^p>q$1_d{h=uFND(a5A{|B!_{w?oK4e0|0$2* zOaEY7Bj`%O{((vT8qN3C);xh_Kjm3sj-?ha4F+1N>gauue{(K}3%(-q^PlZ}5<1dF zg0iUwT1y78q3y2jq__6>!7`Sj&#n7_W}CBNZN|pYM3rMFhYzG^b?7hmD7|LPV11sual9WVA~wMKE>5oM!QvnSJ15^qKa^qktr z5^z-FgHhURWqBP|u)k$@(QOPHi{{d8##qFFZb(+EFzj4!DPhJTYTHnERf5Kd1cw$H z2%Q&-oe8nVZPLKG1ox<51^nA2ScHRskhJ}_i}^O6YRH@M$2%ekT7~vmAO!!k$PzIc ziK8n$_#p(EU1?|+GyTP&FHo(-CmAVai6AI^g9I+j7;WIhIe4Uof8}V4Wp%{%X<p-tj*#0XMyJWYH-8aC#{#-uy1-fh`=03!5z{n$s5A6N=3=60J^J{~3X8joU#KC+CWDbM^uQSdvMy47(gYl*w*Cj?X@y0nm>V@|y8QWH!W2i83^FM&gaW9MdQda+1+w zmx4e3`}&(y`O#GQ+wVBr#sPx9V=~W&&|&)#g_OifA0H)pv8;+u(iuU&aX)y1lYK^^)5tJ)VB)`tRbz~Lle*Pk2r?Df}XZCmZ@ip3{*ApW>nyL)A=BkDN zi=U5s)`j!i>sM3OX3Me|&v3wg?_9MXmYZyVTZImGx*^Q@@4?#Kd^HmAr~2Qq*}E&@ z=m-z3b8JUIM(<)t-e+*z@5nZlqOjJUD1~1bHo>!Its9l?Kcxs;^u^xF6oS?BG^MEY z;~ooc~9>6n4h`9ARc60N5ybFo{RHE9RsNLx=TDKky3euuk{@g+Vc?UKD|gOelRT9*;x< z$*CkbpKAdbFbn(6tc5-CZ54>bP@q$Q^#>%M0D(>-goF55b)X zWg3-)%_F?5-Q9_wxho**jK8d`=kgr{f}Lq!t)9zSmii2zCq6%p=wP;)qNt(Uc;N=h z)waX7`dTVaM!oU>q82h<+#&!OyyPzo9ih%(x%H!bYHo9h7DK`rW`J~t`hWXsb zXjmlFZy*vFKnP`6UmHp2pL)i8eXG)2@d~r5@`z)Jd=557q+RzEPiZpo#Bjl{iwXkf z)b5VDaxckeY2|kWN0b+SH!9EnL2V>IiGIq?=#C>2#Qw^Y+gMd3cpSLm@62zk`2%DQzqmFU{T|#tBRS<0D3YQ8loyLV}>o z1_Ieg(W~=bGAsb&FmeRnFZytA?!U8Nv1yc?zHKp5_E97zu{YRG6h+q~X5$lP#PO41 z=+CdK97TGj9=TpCDe>h3=9$QTn2|L-N4`?KLjy-XX2E{GuNoybtdcF|=gHfxLrm5D zJ8YM{C*whRxnA-LJ?$}U@W(Pj1-}D2p}^s8Z*T|3@}3M(FtvFv5K_eOGzmsx$lyA7 zHp+H-kL;|7@3z~kR{`^cC-bsQj)!Dv@Is7$J(ll@gnldXYqnLr`|v7HUAmu+<)gnx zSTU(C!dAK;V0&=OM@IQGp%*hiO4?r#D77a5^?mXaA8%7vp@o`0*;d zi-rrfrn+)075Jn$cRt^(B4#5m*1!t?U7a~5=Wlo+f*W3W7&9|P4F4J_>YlB214g-% zycw0S9UvB{e$yALJaffZct+iLDDn&zkbU5k+ZR}L!DKnhxMH#s!SLlX^7YU+^wWvS zDPVBz>1kLvkry?y{eo<-s6l&<+ZJU=aiLpVbIEc55$+O6E3vCn%SX%;RGtlzJomu=Gf z$=*yh#*AH0XpGA<9dRvr1OK`4x_l5~bOMcDo}|z9FF~in#&ckY2VF`gZX6u%)QcRk z>0SZC+j92U2X_Fkt*w`iHEAiRZo)fMT>Zw*42Op!^wUVjJcP(7*0&h7#qBHc=bHli zZkwLZ@9jdnAK99bE`0AyAkurIEYSJmMzT33uRzQz;BIr()6M27Ww-5MAj2n#H6iC=0CE&HPQU-bN5er!M7l>B8Tom`Z+ z$oK*l0E_ly^88AZSwv@mK(EdZ$rfu(>`v%4s@?5F_#=Lf+#OfmSHgVyb(XNcNYq4C zXXReXM+p-xWfU{KQ#4mNMCWvZw1lZnPNs79Of_-V1Xpd#I93dZ=v222$Z*#kli=(A znR~1@tj09_n^bpiBFNJv>z^xL6DRbH7&~)bbZUwZPSsNI#`XI&?m@OS`7m97y}`w= zBI437`AZ*yv6Sz_y{a=8Zj~^rlNEfHgklSdZzLa^hI!peY=nlo1_<}VTyEWm0Addj z;UQTqm*(WAJz16impiDn`I4iQS;M?01(vs_ss)z06Fucb*1yRf#qi~hOGNT@z+E``yJ`#y`MlRL0a-?mV2<(@gR?MlyLLMbkr{wyJ^4^ z4rFrXy~$7S0d^Mn^U+t?fCMONTi-P+iihKLoQaxu7r`c7Eux z(%aPL)<>HtWo<*;I-vNa=$m|-mf*SRIJA5#nXe$Bd6tTm^Y#Ip-j2C;;v||yqrjRd zI)Gu+C846&@m=Pmv8j#ETC{D2dO@hV_S+Qs%c_b~Qc!rax&5sQU-gp%xD4?hlYjH* zA#R`I{1=}oz0y0WbDb?DWXsS26S!(vdd#b;!gL9{I`hZDb=r6gCN_HMN_NlbD8)Zdk%+r6~F$gFP})R1L%bNn63(e zu#KIAC94~&fXkNr45WabZD<<4JSA+1N;BiiJ}gKah-N|2FirGDo3tnbm^!+E&GiUD!y74mrpdqFGG<|B+uksI2-sity2% zMSrJ}K**49^4pLCiMX|E#`;Z>PVWSauAaQ7 z>kz;TKxdFo6wBlExjr4YuE!6*NWW<_-S|`q?rX`L2*t_?hXmQXlYYQ3QJenp71#rdJSJI&ZqpdqI=PWdz-r z!-BfV4DC|-5F%JlcvK3X;RDr6x%rg|H~(8V|DH+i+z8NP+JAa9=byz)KQ~QV?_B-; zO!G?qP^x2DyN{w^m>C-MsA6QAO46IM&?y_4WtGo?&vc$(3XeyrL=>8KS*dul4{bc{&=Z=X5+<8}>v)&W4~w(_ zR)vB@k&&t8#FP8=V5&;1wj{+}beBhD*-Y&omwXUTN-&4XTCQel1Uz`!$O#QVz!$)0 zxO-Im+XhAc)VNbW+3iq>w&iWa>OOT6$==em@9}pB*!~hfL7I0xI_zxHjr8+x%JtqteJ%s6N4y9?*62LU6nbb^VMbVCTP|lwf zS_kf38>ZlQ_z_}De0`9<2BL`VitM?qg7$3o949P7MoIKlKp=2P35lulkFF9I9i$`{ zN##t_`TqMa#1^dOn4_Lgz8pS?06bq`7J>QW#n(yQqxPVHJC&)2e#4@ui%bh`Q$#Ke zK?+hJzO0PtNey6CTKCyb{|-QIsegKsYkmi_^Dn5o44~Vw{Qund^?(}6pS=# z0BTk(;rdlB<_QeoqeK16=pv+NJ3n5PN*S4znGt*K9c!=3 zs*HH6qhId=eB);BFoZ~uqi;27zv2Lq7wTcYY6*1X&WFBofo5QnQ3BoJmu}*OH=g@q znf7p)0Zw9)DePJumy3xxCR7l<`skY7I;x8OP1%Md+q7o%+RykB*iZ|q+J@1H9kP;KQlgo*2WM_CC_l+MFd%w>?)+|5`axMME7o(%;2W4z+3w%aq_K&kGLeUADJ37c4+Y8xP+1gkeTRY;j zL(z$vTRIxsN^?>8yngfebgasY;F2c2?IMXFaAHb)HTCU4;?gL4>{657YG1S z0|5FnGk#a}-)e@Ky}sK&&~RqvzixRqa7&a*ssf0x>Dv4K`}=;COx0B z_|AzB`_d2;>h||HJVpR6K#8p4SJ3e6IJ0KNHFkoO{@UrQ5ShaZ?Kp2h~ z3Ke+RLSA^Oe}6$I0W^;9L;h!p!%EzF2as`i-;(h~0x{K5Dgddj? z7=QpWy?w}kh8xG<$4%76-U^CN(b&Pp$==Y|0skXXHY{4!GB%~{qs^n8;VZE)lp2z@x#l%4;5p=XZjr!ydRGbd@ipl`Hn6hcv(bO- zEM{-xWcz!^e~QLGRzKqDqY`_4YX@6>dt+uFR^IsHL9dXj?cZ;RDB0`0uc;bE1O@ zoFM)QqOb!csbbDP2&U=C866lO)4EkLz3p|*8nag59Y+p}`#%Ld)W7uc-!QBFrhtEM!P#^pJhJ_xV=3~joh|kP|Z)gSePn#6Q{&>nf`)s{v)J5YX3m$&ro9g ze}~e469xQpxG~fJTe$sAD1N{32iM?#M4ic>0`i-m{<&+4I$0Y!n%h|aK}O6_biy`P z`sUWZ8H?eAs}%LEO^yF$|9$=LKgu^O zO#c>vt{F`7^dC&yu80(WI_rK=Mjdy3-urw29lpFzuR8w0MT;q@FB7ffTAS5 zg;BroeWJ|pBYg4!R(1s{y96$|gj3$alixxq>BYv z8pB`u!+4YdE`T3KcxJsg1ru^;>7?-O7kJIuqh>>nyk%22JR1VQZ16G20cW#){QaSJ6S0$!LcjfuY3K ze0imiI^;>R+7DIZ5IjAa0Pat4XZ@Wk{!YOD&+y&9<1v;GjrQ^SGama#UGldy8soo8 zG)4wm_CM2TzjMuhLZf}O`)_MB*8e>k?Ze%Sf4KbL=ZgO##{ah(?W6WT*J!N&do9xAFuyT%J~na6XRbdfxju8Og?`or_#SrP9VRPlNbWppYiwqgHj(ev`zJpRTkH?CB*TA)`7*9+~Z^cD8l>#mm;7F z{KDaigR+Y-f!PYLSy>q2|(B>4(i&&NO(&Ld+ zmuhHHGBi`p&MH+c!laynZg+?ToRYU6D-pYYG3&skx^`(~k+6RSLo1!|hw9c!)=SGi zzo445lh-4ach_j>LZ#(iVv_^2W_oF5ho4w7qQ!yTneI+SRQ6be1w4KGH&EO1IyH>Y z=H1*TIELL1YUI$@TH4$}m9Inh za}7gt?NmP=n4UZNs_XGLao$ud%AFAL-Q=AoZ?b)eJpJ8t~m(hpJh) zf$Mz?oMu`7cCf#W!*R}Q1T&|ayp?IS^N0kB)c6ST7+%}c*W)DSH2-bG81JN@x+(hC zZ3TvNG7(ajjon=}yX{Q;hE#QMjrF?|5*-RE)ySz~bE7u!+jGV1@dQWj)^f);eOEc$ z5@)f>ka~CKLtd_1=uWMb-TOqgRGy?}6K&vFduCHqnEme)~ZZvMIHfP&8{2PMfJY*Ve1ylJgayTe!;)3K){& z9*-ZUSI=IL}we`V4QGEvV^I_YqoSe9Tv7%Dwh=pm-blyOc7D z4}Y-1h1SpKZ)#M`bVoBoo!$aFU7IDWxbOpWYs%Pun{M+e6e>%u!gKM83)x23UC`+1ZPNR0&Z`l5GvEmog8vJ8x(`Sh48ku$mP zC3MI%CLz)Yz1}sph8Y7q#>$Am%Hb)9NDdto}U4H?z?k|tjroqr+>Orm>7X(P7*gAZMChDd6TR)bHcq9y>n$#c_+R0FUP zp3fzAj#-=9qv?G7Owok2`FsO|Z(9YMKAq0AXNYobX=$62O~sUCtpEh;9h1>vzBQfR z8KFx&Xt=-GQh!#jiCOxX_waV0ty|2nfS8-o$YWjcGa#}hA&v)^KPEY<_NI8K;L;ON*n(l0lBs#W{PwYn#u&>bk?wXws?IFtr z>_y3x3D4Nki%fvoPiB%EFnXiBDGFEY#4^gKeejcrRL0rWfJAZK4HUojhu++$Mk%F&)AI%m{`tsxrN=hNbB2tdQsAAIt$}Qg}bY zwHE{E4TaFW&+s00Fkk#d@Iz40UC`LbQ$SL_aPN;jmY2u{3?Hajlx9vJv_8FCJOKM@M^9v5^5}0iO_(W%{WnpKj?aZWq=}0tQ-?wsW zN12%TJDP3}brD`}X439d#)(-#{GOk!FZ0xo6!%M>C<uCrNaX6q$EiG?%&o*cLTS z`zS%))py`bHA^Sk)Zx@5)6%KA*{VDr$(J2~;DXy~2!#vk(M{2avb3?wR^S8%AHcWX z69Iey&kjLsXSpR*eHiBj;*K)AnM2>l6Gq1K4mAMfh^)y*MeFS{W;!j!a0R*EJKrFA zGhv3sURS$VugD?U23*TCn&w(rwvpMlz`h0D^QLR=lHZ&DrY@IP*V{>v=6YV}(n51~ z5t-97&@H3?AujvKK!<=@$~gq#@Zm=x{E!~#$iT6=k-66F*^#a7s>OEbwkUPW=-0(& z0|YWX+-_5Z{Y7jLTQe|`DM7s`-)8zEWyhYnX3<|cOSvsfR8wq zdzPfzbjbmwTm0yGLa7zJv_`Y}Ij{c)RVyo$-5p0zxvwV#1{>dzrT(Gz#6KZ{_0X}kAxI2lNJ_KmdyoP1 z%SliEPWOuyP80Jd=6LrRVPD5LsPh>M*{M~Hg?GvhdR5^^WlVSfH5fzdq4Jgt?@z^x zI>}Aa&7xo2;7kEm`eHZ8L1D@^d(^n~LisUbKCFkWeQ4TM-yRgfeJx(JwJg*$UtJn< zCYJ>U@OLRtS|1pDIO(*k;iT$waft(L-CZ*=YB*0NI8K7e!Ww8=4F zZL`al>AS_35+;8l?EXa_0)ESgh$+H*sVqoBaLA+2bK1DLu>^8-ZTOIx4nDKkIF~x+q$+y)0Opix0ZtG{CBlwypJ>dnn#>th-AQMVr8&- z+gWdq4L3k7;RLDmq6HQVPh8X}4Y&XCXCvt|#xb3i)HDmV1xUvD1N2KG`y>l<&D&EJ zk{OYIN8pkE`D%JVDL=Z0~w1rm;D%}otIJXB7^?aRTE=kN zn6%~4B+^=Kj-oj1O~Jfk!FiZ#xP~C9I+TZ{8`7_GYP?cVwTUkopjlZ^4)ccq%}!r& zz}oV^lj9|f^$WYQ_kmb=>H^du6mx3eG~cy3bGY6rQfEimj+j<`##1RAi) z6u{~i16ar6RK}4Ifz9w@$rnLn&2dZLU}GBX>##IZI{SIV?>3_rn|>0)4zI*!pZWn7 zjS0o+rFe};8p8N4zxix!xqE@Uy9l_LD?QL19Z(}lA~~43286TBFFaDzvKZ|P-a3?> zIC+(`s7^0pmfuVH3OkOAnX6alAf%V(MNU39g@c$Qxfx+jQ9{YwI3kR3>$tDZeat8d zYc?%F{fny(Tn7N(DWQm>{bUxwGlJ%(52&?-yHa#c3vbz_&vyFKVx$Z&?ALu(t*Krd5qu0p_O! zZ-WDd>5DKL3_<3}w^bIWeK$7mhQX|xFc?rB8))R zkKWqp4exftQcu_bjOd$NP|(YxyCaB;qo2Q-+nA|dijj8 za>udu*Is2BTz-2=DZ_BvcI&>u9CtB0>*T1wGmkwtn1M6*;uR;sfDt&L{!#bdBO$z6 zNRyH+m&kewU=mrH@ojPhj~X!FCG!P$Oq^k}1aggJT4+lUx1q{QI*omwpjCuI(7RIh zcLZo$wU!gyWN5axN*0k=aV>2pdqLR-ZzA9z*?8vC?LUgtGP>?Uy?{G|iIbJ|F#%|$ z=*F7kb3O^d#!5zDYfLow9MOvuokg%1>o7bws;|$!#Ew~x(ArfdB*eVO12uDI6@*tz zdx_K0XE#)o`;tU5>YaQeT@jFOA5&)STfA)5}+u^C^VjYaO~<$%tz zn}6Jp^f}9X(lKQw@urmXXY>$<&OJe~seN^$S!5X__MF_gJ}h-+gXwoEJ)IjwH{gAU z4Mm@BxRODus?}2V7o5Ed{Fw&`38GWPE}^7KXKJ+EdOnbP?b5G z60KiqEj<35T46O9Tr#z6Rr_%{Z@xG!leJ$2a6$}ERc$D@NL$4Bk;N<=U&75sS{4AS z*zxeoz?)O}2w;LAzaA-kTFXAZKHhh_kV8|@=!pQsf4<()LWp98)!F#C?Erq&8WJne zyTh;Me5j1-Y>6Ts-IRb>hC3!`kh4`F=P_2uU?$aDTWUlHSpJHIYmUz861+oZ=iRP6 zMRhIrcF$|%!uT$gQTwO;2B%uXL0+PkV5Ul{eH|YD#2Tl*d4;*PCI^%Sb#Rl1&y^Y( z-uHnZ;n6SrI3Re|m*GaI;I5Qw-UWff1>*x{rp3~#vP_g6NGO(~;A0*mEMgx+x*-<2 zCfT%kRp548-QQm)*s%{~Fx~K3_L!KqGY}27aDXRWD9{nRzba<#W1)@}6Y_EgG9BAG zw#Myz_Z|G%NznxiH?}n<-VAb0%A|7W)s#J4qe_~Qpdh%;=q?y(W8zWTIqdU1sOO0R zVJ*}CR$W`3Ms4)~y%~pWSb2t8O!Icrnfl@@SjiKV?FIO{HB5+U>B?N|4tYtE+?mJ}P)UX>qP_%m_VgX2B@cBui4eu#!U!zx$NR-m4 z1bx)TWng5DrX{69x7_tADyZQ!dvoah3CHwjQ&zAvHn$X|TBSab>vTI(@f*rfb%_yb zD7fv(^^8>9(-orEWymv&<|qj|s+*H#`WA?Ye<@pZlQoRefn0iSeIrI)*1;Wdbi0d) zcqy`gmhELqLi&Wl@yF!YN8dSqP~|}!$f;azi^GS~`*eCBb_=B?GY}m$Sf+TIl#Zg6 zyp(dM1z)f7a4HbM-(VGpIT-2#$c!1kI>*venRerRFLH#)aOx7!?|^&~fR&1DxtdJm zaikfVvi6%mGw{UX74iXlm@sM!yvLE6!l_n&aPIODXe#$sSIJVv#zRZiHMkD6Vv5nz z?nB$ionWGcEPKA3``Mn;lk&8zr@u$^_?@|q6dx}AUs98dp7 z;KI@h<}>!*8+JO~Gx$VsiQKrkL=z^QB2Nn$%|+jGTb%ZTDG2=PN&b$i&zQ-_x3`!Y z)si?TqHe=hfmaW~Xr_o3N|EF-N0rE^g(Az*EKS502t!q|zkLQ){7O6@wLmB0Z33+X zY(Y>OnE-c69`E7?#(E=Jvw4njD}yOym?BW;(}Sc2pB3a*q!L)rATm9I!g3OViC-mxs;nns;G7D z*mHWA7zMotqG1HeQcYqNrg5U#hd*zZc0Duk03mnI&9iBs8H63ozWd8Wn2tHRoy^lVOMNzkoAfgQPm>TIY}m^&!1 ziEXG^T}9R#*_q#?2=gv1aa4J)b8X9QP%T32jN7eZPr2#ugzU2le);q?H($k?%>I>2 zS21F|P0II?qmA9A;m#`jbp_k56vPNb^z*Jg{R@Pt-(+TwqH z0{Df)14TdWa4+@x8cbc`gIHd_*i{)xT*nfVw}ZvETXLp+j7IeS@ayd&+q8BL>-Jk~7QPdQ|#~#@LkzS_ktfX>paCT$F)Lj8roc3VAaxl=CZ1byD0- zyz4GSo*6AmJWo3Ka0mzZDQ(snn7(Q(#RAj{aPhsDaLO*hVE9w%+w^E9k3o$gKS{?u zLq7o=x0e2WZzJ7Wg@@TE(VLxNMfYvsii{{zs9#B4SkHPC%X(S1QWESik64?ZQ)9xO zew{bZ-|_da+9qegCx7%3C|l05c-CVe@|6MbEz0z9L}if;qNFeEGLg!@klcZVzy&iL zH73B)r9=8hkW38Vn&);+rPfx?12^g=#^2*-G=5c3boh)3=ECdYNAO>>W9cjkXVRb> zjKdX*a(P*|nfaw7clgztTotLODJpFe9hONzkyFlT!C3)V^1By1y{hH%h8EOaSx31I zFu;_69M0rAs$7R%Zeuq}zUv{V%-Ui2@JO_Uq0dD`_o+NaPz!8=C_8XO`gH;7hQXV< zx7w?AEqlIgm0Y#jIb+CX279AQ7R?EDcZHZuCa=omWGKr6?Y4bTotJ* z(VZ?+B{o7?HJ6AU>Ory$7pQ@7*BdfHqscT5yHI@g{Lq78q9>-~fqgn^p$PEe;VqCE z>5#(E0fL?}DM3UUbA^~Z{1^~w_+$1=(VOhgQj;EmDH0$z_;Hr1VKh6h?g6lRts;!)J-DtJKYesb*wmr!Qv z5-g%cJ+d^YXe`8{e=qqu_$#?J`eh)SOi65yk8@C>PmL)5rT|0V1qd$A-8x0uGaO`^ z@c>Ac0+B|=us_=4D^s_ES3Bxm=B@_*^JCjqsmwGl;3}&1vG@7PA_$*92r|4uuN~Xc zrttEe_;Q7(N4v7%bK#k}40T-YFUEZP*s@zP%E9>Bn}fZYD=r=6%?tTi3iF&!YO+{l zPJnG%1O5Sd{;hyaR5hm%ne;X8HI_NnEmR9)w84&bNxRAmHUs-u{?sgIoYeV`*UtP+EE4rm z;cd^M72{`ASWt9$FtKW436+C^u*$iZ&k|x=fDw_Q*~GDVT;1+t2+Ln?P%(CrVR6o# zKROOLCR5xe*m<2+!ZvCtRWI7MN-kf7d_i(U8OF7w%=CCt_Ak9k%9)@xE+0NlTlNim;Rh(X)vOEzq`!kM7s&jn-iK7-Pnp{XOj=h7eX=qNcBx+}op zbnwXLYUw)6YVL)(snV5V zOR{zarwy|eD}D_@1{!DrSG}HQw~;laG#6R0#EmRTKOab3P)hx&MOhyg4k}Ic6{s)d zL3v^PAe@uGAU{Ethi3AkP>VbKG57gljBQ&M%YI8fM+Lg(-2apv!R$dC;k=g@kCnPr zPn8!kEaj8N)?}Bv*Yi%J=gVG9iR)OoCu2qhIZY;LY?)gfjdb+GY38!T-~k8J#eQ+>pN`ed*?_M(_1o5_fSPaFPH*a?V;;PHO_$zg@JTiU+ zeFQ4S+WMiL0hh-4%IfN0S2n=7@_XE~ZBf&D6OPC2U0#bzw zRPKkEgT4+BcTr4_dWs2Icu?b4JN#`KW6gWiGzx!e=rSy!=u1TOs8Ca?w75DoRlr@w zmt3PF!Lo+IRb#mbhEFm?&FQ^jnbjh35 zN-4iH9|?u;N5$uR675tci3JT)yeukQO zY0l^^H|gNjx)s3Fvqk=HK6#+4=6UCY|-d{A#7 z9ll{+hR>VM4J3*Q+S?$4q*h*TXQ^2UykM|h%s3QMIFFWQ1 zhGd{4Ak546%5WXZh?&-Y#_UJ(W>cosQ}3jd#;6@cx0CL2{bLkEj@ZiTtJ4haqt*=& zKcZY4Oh4AZLXBFq5SwN2S}=^aSWCr&f!5&DW!EFZfau^v^T*`vBUN9l0o%N5RU?5v zG#5i_xD;7iP=UiayK%H=ecTZC zc^n_5A9lN36$$qAnztx?(BI=3+m?Kn>y!CQTM8Ntj7*CB4ud}vfyV^!sA`RB{51S7xD-$!27vUc3i0!Pnd*HU{TU+G-N+15p$#>{`ghuSgqevWrBEE`u2( zuGK_QrTao~DnejcUQ;fduOSoAII^2TUbBn!wf}2A-`DDhy~WurjV$>*jU(y19(P3? zU|gUR)-r^QoFR9jxk7#BalSZ7-5LhF(o3wg6IG?l-k}0YG5p+hnX4EZl7V^7?9Mo) zH>Lb2_=_WwCzW)gWOw??8__W? z<6e?E_>WZCYz7p+UiG%ygq#!Q6;(JZHGbIv)t2lUK>`pMMmG_#J;rfO?8>!-f;8JV zp|gByKPw-$9WoI}%R;8QI#m$@GP%APV4e154jx}!o;-pOW%@;NHmLdkvvF%079KK^W>UHn0XD zW&#IRL<;b5b>noX>K)9oV~*^Sch3UQ=}~~;S!H*)BV|n9Nhr=c5yM%7cOHEm=WrT` zJ<|Y?=Q_zUf@aD>4LqzSM2}?=SlFAA-P4CXOaW)U zZj4&PT4CCs`6`3T0M|4e$n5q3mz6OV>Dj3f`aokbN#-LwZK~VthHaaJnyC=T+}ec3 zZvOeJbj|?RG!x?*$<1y#RW0z85NMe~#6z88M5py5+v1K+<0=A;26Y!L->63yl=VEk z7ZU$H6lf4_=A5{*NznJ0_aUY*jXV3L8Bm(+@*bUZ%9hUNubXR=#pVMqd#dX`4I0u< z6Ys-IG<9Z4v_g5Zzg|d>zR)-!xXtTvzCgeSsV{R7;D;TX+)8{-8%DwHwTdGDxiw6b zX~y$wL}%jZ=oL9DeBLcH;OHu?bpEb7GO9PP^!v5!bs7XS6u|l>cM0^nn(Y!1(Vm}V zPu`|`%RH2Mel9Sg(R7 zk6Q!si`=?jNpSbO8{9N0emykXfi!JRB5rtzQXJmV0k!+=g816 znW14oMAd>vq9I#v59LcavBiK~J$v+`A}!dcnJt6Z2zKPp8r-Xpwlt*mzsn>MsLG0m z;wL%~W{_vsuz>c9M4yPk+C43|!ZL5SuSVwtd(bM{$=nq9n1ApRXMa}hee1pwqf0@M z?jDaQ@kq_wY*+bvp4b_7G(wficN=xxud*-HIcr!?a#-6>A`uuJ*^qJ~IPtJq2Kru`Oo9SiY_m*Hh+CI-}g$c~BIncB%m$VB_weaI+@v`GH?!6!1rgw`# zXZmaMc{@k1UO#|BD>j+CO&mBvf6dRs(!}xcyy!1Rr|@uayQAT75*O@AdV}Hob*TM_ zl794V`;^^CQ}L0AO!hP!dy?MPYa-SFuFM|$QSDeHQY*Cs3k zbftVu;NaEiqVIg2G~@C3rF9@SVd9f@of~XH+UuT^aMlL;Zb9N2d5lbGMl`{AyVbTW zQuc&a3M-p|VC1}thl}y((3j<*qqW3MhgE$ZxmTaa3*ffe+|ioz*ybg-Q90fKrMw^0 zPTkYh>S@e^;X=77s0?D!ALb_|v!|U$*E_`!-J03i47P5nkUBV41;_g6RdM*dwMY!J zkbnSF+jm+xkqjI`Ml!n3(Y|p^Ka+dbiv)(@QWzbg95%hj(kI1Y^t}`PdcZMKj*zB@ z5Tk~R--YJ#C_7QA?Z4&bZRFtGl$S6~72KXJ#7R&?2v2TFJv`cw^`24WL#t?eF!rfP{rR^(Vgxf6UBJ0`dPU=Zn@Xe&S0 zY(y->gOtd#wa71^kZ&-fV7VZajXc4X*>w|y7Sb9Z@`EXGOJ|RfSQv505eg@S3nj4fo(bLaC!qR3ihy(k$_lt9^Q^-pbx>-6k zKUJYg@MhlD9Xl_RWZzhbESCjk#@JvZ8M(yfww7r$N{1mbJt6epC0BnGEI`Tbut(>) zbF^SCMaA+B{Drr0PR@YKll&6*kto)6%9|8(5l2%9 zcTj}Fq6!Z&PPBDfCn^mw9p-#An!vK#U^hlkj&u2l-&bpAJVABgdq+EYk{TPPZ2lHn z$ZBVZSIb4=on}-6l1>Tk1wU{|(E29uY}}f;MFn(mx=$2cIDiNKIV1*xPp2QF`cJ%b zP(o#)Zd+|LatU~oxh^U&>DNLN0i9obCr>t(+utSB5+O`k&QC4Pp} z!gG~wx3TV(Vc)Dle{G-MNLz3 z?dp4`Zz^l?*4hJ%^T3IZ&^2QER71QyPV|@kH)(t7bRce+2SRN>HTj>#i|_;C8@~M` z1gr-~Ucj@`3WU#{cPaDi(&v;o`CkfM9FIXg&$fPy?QT7W=B*aqo44T7z=Y-QKzkLo zr-BE1h%Hoi*_D@MpBjz-LS>dD63J->)q^^dawq4m&N-V;(Al_?f?xh6eHD2KBQ!#f zyJ@3n6#kgj55Yho&zUK4Xx;BY(g36}fHd@evd|zWssAyTw`pkL+JZ*U%%N3iP5Lw^ zz%=(OLm-!`*#32j0*`2W*AnV=&V{a;=_})vupNh39acr4x=XUSwfZlf?8mnxx2PYQ zyP>KZQs9k{M1;XvT&Wf%PBf+LHhg=mN@lsHR5&6?Nx>(c;<;^RI^zouo!PNp&s+2J zZ@X;cBa!l*fvVGo>LBT|ziB_vUo*>AW>&TCwmzTqBC7sewD7}@o~^v~yxrFQt^1j1y+hRS=X1=|bh%3GW>KiLGI}vbN@WjL!hsfmMT#Q#n2sG~oCsh3N*P@8)h7u(JWI_1~{s2T>gBpuOvj0QsX_matYHzoK znb!#(WyTugS!c%05kj@omXY+@+Ps^fGcfVhlystj4QGo~mHC15u@Fgzf{gZ6m$7A@ zzdEoZE`CA=!YpxK0cZy=f*9Xez5O0eja@KfBElTrc>dKP`}buz{+yW=r$Hlm zWa`R|k4fOxXeWG7;Oj=~n9BUEHndc0(#4N?U07H2Lm&2~o>n&77x`{Og_W3H3A(|q z=}%wGZmM!WFC$R_Q(4Mx>#v9y?3{4Q-omD)+RFF%mlI3z42&A2^f^LSck?Ucr(n%I zSZRDJIX+JBa!BBQ05|?Nw8+Y*a~9x?4%HdwLS%-)O$>RW!noN!d1wC}mi#gDSDD(G ze*;s&Bm-7=H=Q&(bq4XOQ+=EC7}JjnQ~Do5T^rVTGh<53Ib6w%Ny`)S(ZHv0(z$mJ zP?5_CUUuJrKPI80Vuu5a%txo5x_HOFA}#WPggk0te@EM-!bX zoFy+k#&UUz`Pg4iTKgVfC|ZoKVjr#u!!iO8Il8fphuNwDiyoQ3Q3SP#_~BjQNVEMJ z7LQbjb7}&V4-5tPvz*xCIZGT_o^$b;2lO5ra-0uLo=f3f&MdTPi&Hxsy_B1YksP$B z%_~hQ|INnoQ5{s#MWv|zTwg8!Q8-&?@q+jb?fEFow9Zef#jX~aG}`g-lw>D5@H;`h zoE{}x382dDFNvKR;ubxwgQ8W;9zptC@V2qfX{5&uXQAlJ7VaZ@Qv~76ROrqMz#KVO zZ6vQ~nE9=vugbEsf)tVxo7(dGKk~D`4<)mIjOr*2&I?5Wn)8|Sh1f_u$}-!xcW3Y? z+VbL^O1pYNcAy^5)>H!1DziLGvT^;q*N(y|?NJ9PeNo!l#sH=J1Lv>wQRmA0Y3j<6 z6yDqD?D>NVR`Ui&(I4vvbidF*pwt$^q%?(%A`%yvcW9Ra8QA?%?sOZpZN1IXGT>fP7^LyqBLNx4Soy-YEK)^2U z*F`NVm)w~afDyb~z-ad9%y>8;JUOo2s){b?ne_4vw@axlR)BoZON#ipC>iCY34Q{_ zt8cTj6TPJomIJIGRAt2iY8^(TtQYsCwSe3bF63s3f+L#EpH2G;b5(ka!^a?zmf!@1 zR4pr+F&%d>j$$3xl}S{-ja$!F@|aVHoAYBt=)h9xE^`>|#tkJAN0rS*EvZjl=bHIb zw8w}Uqzpyrqn6VlX0I%3iEkxzuNctiCs2&+ay43(baS0vfDz`H-OTc~F;|ygp_pW< z`-r(jjx(y?E6YFCU&s>T#V~dOb2DJXs)WQ0#=^y%xf?%Z_6iLtwsF?+NOWqI!m1iQ zDx4SW_c?f<5-|5o;pZVsA=Vm7&b#%c3QGz&y5WQ2HR)u>kqSYYKDUl;GhA8Qv?ZUXF`CC3QwZwd# z2qF$io?ksinuoQCCRnT^ zH^2%oLxD`fWSMO!S$&3}Ult$5nJE%R%Atm6nvL|9`7DDDrc`To4a*p^XiHmqw;gO( zo2it5G(7+l`|fV>FWtd!R@pGtVJKd`$@oS^5wM z_+=FZRCs-^`-6O+8u(mWzNtE59;-iw_{BWnz`Ypc5~6Sg&d*1y!EvO4Sq}zGA2_1XbqtM)4ss9clu^K7t5-~1Qj zvK>d05N@4R7NPILKLC+HHRBmKO3}kglLEd}&haQWmg8$*fK*6Dq13Zw+Fz8c9fSy; zs(8Z8QMv=12fr>+h$r(Pp>otE`iV5fJ5SVbb#Wz^16xPlnmS(KGK20ifPUw5g|0{WGYy`3fk({88W`JURm~ky z|Fn)kg_%Y~ug_!ziPjSwKglz}vbw1g6Oh%1g|>^Ir8koAM5u_SJyZHThjSs~M%N>^@GE1LCh1iQ$N`GlNfOs5Lf(~qU zFN+PFBk8)baebkz>BcOo@W$A@KgCF+OUp7zbWuVEq5AytLwLj}x&`Wccm-B;7=p7I z>NKGzs<5^%Rc`yLKwa4v?LFk197SVt^}W(hXhV#}4dqW_I+#Iv(nwlMWLRjfX$Za6 zDG};|8aEtwJFn+6GqG&0c1fzwx?i8BZjHHiX6~>GL_V!}pW>pIbNJm zj}2*dCF^>RYib&TzX45Mj=o)>-ocGHj9(g-S`=K)V>Mj-N~WAY-CRgRw_GRwR69`o z9@<66>lpsx^u}@VjG3844(!()JrQolgvA8Ra z>-`P+GrxslRPChuYhfFow#7oNNl5-yRUTdWp@28vt=kcdY3 zG?j@qW*4ifg&L#Yz}3MpR8|H3`=XY?t*4`H-3YwFj8rT;FmT0u;5sB#Sgg2`4Izn2 z^{cg$Y~}`su-)a1>mh0B7k9 zPd!ILhH&b$qJsv!>yc^JqS0i>QZA2H%d% zb&&|*p1axf==sne`&B(J0ySOU@EndXASs>_E8}UEPoMOXt+)#tDqs}M_i^+ zF*tM5FL%iKjMKzEsAd{rzg~xnHAalMY)yar=p4R!jAlon=cp=nC0JF&w{+rgRfu#1 zJn{O^b?v2PjRr)Sfk_M!C)ldzij*8u(}zxB=^+DkB?$crMvW22shSg`Rz235jF8Y= zA?XiqL8dL+68J1k z=|OkaA;7B;{sS5-Oq7Y%sRFNke~RxfbNEqu?PK)zvEb>$1)Ly!K(q) z%*-o}q$P6mU+E8U?1d{a}-H1x7+(H_*i6xinqm+3wdXO9D;ch|RTrAW*B7>RnL znz6=SA%sL9g#pe8ct>~Z=z?5p&%DcsugyhwE-v|MElE zPN|v+m!p*kg=TYQBOt$1BbDbz#l4FXg&o7`2>T8elRG>4@m)ek6ik&Z%^v)Q?}Mui zA`N;iX#*^S{Z_sSs1)%bA(;07ifz3krSzJyb%>&o($mFtWgnxYr1`b}q_iZZK~9qFj0|C*qs9msScwR)2uWYnh;kGe^`7q|~t-VQ**t(`7DxX%kKodl!9AqsXML z%Gf9I8#UCyx|EnJ+zAFuk181tD7QKg$=0oom&f2 zr}K@=T(81+Od2%rio|c4FYQ^#7ikG~nFoh=M=@Ba9h+W#50LkKN{$k3jQ3kmDDqI* zXR{{#6toG%lcW*kR6$<@z#gXictgyFIjOYh)p2RyO|e-)Ic(I3)H&4xX~&34D}_jX z}NG>e8F)YdUK`yeW^Y7SDft$={+TmQ5@>BM2Z$3J$!(Pyh+oj-e!e4 zoC5`9;~yeAnvjsV;31e+Yf}^ zP9UlTs{kJ2XzzBs0m)%$@l$z1CS()rEVX zbM~pOe(TxS*&43qKChpxTJh>_A?H&h;CvaJvYf9G8SRX#}9(YNJbfq%egl}!kk z7Z^pMe?lOfd(ZnRhzSj2#iy@8>t>lgnK~_6_*)SvD)m^E5+1NvafX*yW+(vU53F`l*rU|6iT@i6}e|aE88Yn=8>h! zg6n-479yG7-eJ;`TQ04Bd3X%MX#|;;Gi9=*Nzq(4QrXJO(kl^ja}Z(?7iIsBeZ6Cu zo~1iW`3-IwF)VvzG-;H?HoGoo6`U`j5!4|3`BQZX3Qz%ToBZy4vC_cTyFB8%u6np{XakGD%opS#yj&25KjX@~RfD57nKk6v(n)7qM z?F}{)cMSxXNo33Uo6^#kH^cyeBsa=|Dj|Y(##%ou2VMf31(1rx4bP5K3ZvyT3+Rpx zYlkPvRS21i_8{VUKaK^tP^`yuUeNFU3LNc12(CSbi3U_xge(>g=-6ZRTMa)5B&Pra z)SN{Z%_IGb#Vd+RYI9`uYlz89=3O<^Onz$l;cqZ8l|_8B_WfzpOo0b$8wMl5bg0A>9`yAdV_z}KKmZGIb@YX*l z;K@0J{4no89wpejOlri-fQCmo6}2_WV}-28>iivYCe6;H1>c~Le`wC4`vRWF;1-v; zSWEDfQ$upwaniL2!J=Q5lKbuY)DM?kvUF$NcN<`JLbm|IbDdXt4(W{V%VVpbNN{|4 zf>F)9((Fc!i~a(Ijmvv1e^RagW!np!JYsyX28s2-iSj&7=00jeMuoO= zEzZ3{n*Q*cpCJhTFm*H`T5w`{tjOinCxvf&CoaprM_f8LP1xb$0^8xwdeqWzE&P%z zIbuwD>kT$vzFG$!!Du6Lb#@0n4KKURN-45l84rg<2M-N8uD6w|CeXs>Q$JTC=j@by z{ZW^l4_Kaj$D8<8ad?pSLrsygP*l?_$Gso#g1Thue?Y2AFo1V+oC(Bk=_+oRHYjQ0lpMb4|k1 zb*)XGe<+7dVB)@|nO5X?Jaf&gS6+mI7JX<*F7b@E=o+$f&P^>n4^LV%vVGQms!Ld- zzNx|mw_gii2X!Hke4J4M*_P$!at$12OMPDL_KXSPLue_TnX?)Ja8X&K9Oe2Bzw3X# zX8n|)<%p?6y68#_$7t`^TDJ2}q4*$-8rtrtsO;%zdk7UywY=9#y_DmIHtikuV}5v3-AHvyJGtv&rmB}E#!N=%m21lHT6{CK zXj3+4(jR!Q)0~unX|$aJFe}SM5Vd_mn$D0VM$vO`c4K@*0y`p=Lr9jiz!d~B(z#eG z!TL-XV!D)FiJnv}WL@Rh5eAkh(pH|2Md&HR%-t2zvb8D_Z7WzXXF10M?1A~;YE;BJ z0^V>;5?^*%Im`DxpMN)J167I`Dzl2%Fs2b+N&;qRjH`w%-ek%>?L{6#Qj5xgfFDGL zL<++ZPr~F`vW&d|xpXEBrs)jZap!N1dxBZ@2k}-2-iLr)yt?P`Y4}kcok;IUm5LVH zAi(W{K&Tvf{gwI!E^*_2-~NM1sPdDCns)Y+dE-cfW>t;<68Xbv9K7sGTv-HNDpGOqXg}T4d8929=Hcy34n9u%U2hz<|O0RCjW0T@)H1b z3_R#9Ql#K}u710Y=T=x|3@zR5=*FrE|MB<`$Bll5Nz_$`dxTOa zM6<=}Sy8|w7dfPZHFeJ6))OyAW4#LV&wA78>{+2_nWuEYvmM#ceQh&N)Tp;`vj`GM zZ*i&?nWdv=-TFluNFvk;KG?i{pnT?_ahSA(i19aPec?8iMsDc!NlWF9S1{DROg9OM zYqw&${zw))8c;Ql{vyo}5V^{SA5 z=2cP{Dn0@?*v}hXT@{rNkRy$qRvXv4%298A;5e^H(T<*Ae~Xgx51@1Zt0-50$$wq6O+$62hl3KFgegdRk||+iWL)x0%4++{ zUZvjnm{MrD>5&I8lu)yp8 z`=l`-P3nIN&5a$1Rsxp)5?}wrtTC>?!y4oGZzQt)r^SOm5@G)gD)p=Sfgb;BjPS3o z|Io(&E^mzEuK;ZS6sq+%p8`oye+Sjd@vqU$erwtP)@}cYYUTJVg4ur;Zw%-;=HI*r zG+%-lXz8!=Tg(4_00N4<*ngvu{vHkfF9e`}mpJwp!@}Psj_r&8g0-dw{|VNL^$R&B z^EZ)WKwRQ~7-ar}F~!cz{(q5Uzs>*q$T5!JBJ@9x9Ajc)|Ff>(p7FoTv44Ru_P@LS zuLu6u1OK82Ug0lf{wAjHw-EQwVEX=n5c>ay>EmSL;P`VW<>{J-Gpb1^)Om(i+5k{$%5St`VPV76;h$?Y1&!k|(Un9Y(1i5RjG?r4;7TZ4VFyW` z=oNL$&pghW-2hU|EE5dz^>Wjx&!$=40)A5-ajABuz6EmoTDtVm`h~CAl{gzAJP?CL zfGcclBuJ}!$qQ~h4o#y|hkSxsUL47id1O1S7e_n65fZT*H*Gw<&E&2B@G6`uIov}x5{Elm9lhpk5=yvC>tdzq96K` zAPUMc9yzAM(leL^b5OTa=B=oE5|Ot@MI%tkG|uL=m^u!RmY?@Xh*b{9Ph~a zfIhxwIXsOX!lLAG{m5|e*irwOMLjG(BkQr9Bi9Y+Eyv1&W4*lK2<)krgx#H;`)2~H zunUXC4*o()ofe7P<1W`U-HVThT>T-PQs}&P=HWUgE51d(F?{N&d#+Ugv;tzo^fRp$ zWq1U)sjw3}^PhRP8>-CDm{7MWVsG|bE0fI8s{S>ix|Q-WQ8W@1=tx)QK7OjU<+x}~ zFQi=RRBuK5o;}Dr8q}MjUcH6vtDmaqwb$#p#S|RM#X`t0@FSVWkFgBe>9;+ppAc+} z>O<(}5AH>I=Ep_fLMll&VNRSr&+Sik=0tSzP6<|u%tQ^&1WYj*Wx?|Pcn^-_0HkQ&$; zTz#aobSwyX-*(*W(!6@luAZzr*(^JBIhPLpygZo{6T9<3Q-`j?I;ilFJ$F|lfq<~h z6Qh%uQoBcUQC7m)BNqW1I(xd){6i=!?sbwuM@J<5_D0fmr7dgpTVz&Sx}V54S387H zm`&)ar-0QVR9stk>qByDQ!RSIE0bNj;DW?{pzTI>>KA842KW83gI!7Woz!VrM23RP@ZT468%WPCP6eoDI819YE(C6? z3Up-#Pa(e0<|urfE3zu)wkMy%Qr-&i#PAi~Fc?9&x!r0u#1lX@veiG}f;%WS%0od_ z!|t#jyC&M%M9i&;#y;UKwb{fS;9Q7L>u&L@I6dZ&-!`ek`hn=}Y2P&{)P z@adwfxLUCyB)%y&4b+uMVt6M zd|+k9wl8mpYBTQnHvghj`+#dr)^q2vZREV^+^ieeFma_3ak3Mjb?s5?>PS)Jue~iZ zg1@R|Jg1&vWU)UVzFNH7FAD}>j9Vs=zpwz%KGVmA#T!RCuH>$f0QL}jqOuUmA&kFn zU*k3I$oBvk9N8ZoLu1iS*+bJqWQLZy@ae3)DdZiZWS!>4i!7sj**mt!NoZ^TaPE=AyOXck8wY;SjH3>1bQ<}uqpdm+v%EtI}OhUa9yj z(BHuTM{W5@mYs*kRcyidd56&y_Eloq8{4D<)R`NzCa2F5CL4oQJt)youj)_Q=CE!k z_RVE_^YjuL07`XihK|Sn$NJ~nLyZp_)5P6UZy4xqVLb5l37s?YcFPt; zQpx=((lnJ|z{SP@-N?XIV7f*PheNDE8-!+@IK-wSA(~3kU)x6NMlJzY#!`CzprUE+ z5kysXsA%rd6di?0j$H3}?wDp6U|3b6Ws$#qQ;9<9lxxQs7o3T^MQfTzhw zH0P4|=BZDkDPHh!__a*0p?g*8N0Os-XXquT8wT_e$V(YtA3mAx+xy0^NKR({im~!_ ze&}0>s712VEFc^W8J}31EfJsQR5Ndbdqjieg&yOn?Ce8f6hyQgJ~Yn=nm^Bnxh)Q_ zky+dltXdF>rXqG&IP!$6c~99F`PCY>GG>mBvYQHD=%w{?f|U!NoKAz!xczOe!y%SzkNQh zvEhB6e323Xpc!=RVt)7LC~Q4dAJRR1D)VG8eE#YuYyyHyp+(DMyoH$53M5 z_cgwIUXEvqd#Va$hDNn8_1Q`D@LVN(f!* z8{eM3+A0Y!GRo-vY#(dM)mDv8YZ7U75+EuYfN&+d>HCuPW#90IN&~%5-DtSW@eM7R zKkUrWM3SQ&DbG!FQzKRPQEQ5a7GLU0=Nb|2`7utWlfyFRqjKx|)Othn=Ej;FLglN?^K+V# z0Nq*;ekB}G(k?CGE%AZ@7u1_(tJNVRK)VbDxZZ-i3&5D-r#_d-thPBh5Rq{h_(Sdf zHh~_?B*YteF>-|fU>UF=wb$8p8_+wmg3rvsrfAvkFa=~u#Ekd1kFK$CE}|=8K#i_lkt;i7r?*9m6Hc?2CnU$vcg0OUlKnKn+Mo>?cGioxj{7E{9_ZNz zbje1UAJ#>huPir;Y1m}tAeE(`MNViq*rq>vSKa-H*!JYyRCN;d+frWrSHiY^DH$J$@q$uD%mRb^b^EVpLE@ozqKC49?I6D8ne8_!|+dUqV!~` zX5DCO%xfDIBh}n@&U{yr6x!T{XT*(VLl=Vl`r%<-q(45gPTfsT?AjCMUV1iLN4OK- zL_ORxF3uVgm0~1&@73}$UHbGQ+!G({=6Q`pKwMIDFQ2;lt$yZ#{PT)^_c>yiwOt^J z2aHqu<~l7md9o))Il7R2ysm7gC+g!7t@()C1E?v=ff>y$?OS+OXb_{GPNfLUp#XYadX*E$s*nK154~-oQ}ZOl2{?H3(IUEhTNK7IPc_ z@H!0vjrn3eDIoc@<9RX`1`n)X!Xq*l=EIDxW$W_cm#GOzW$g-eRnzv()2fW~dipB7 zQ(dBp3p;=l4d8G4cG?E(sk}YVe;q`_d3dRb^C@U+FobBAP8G zaFGf`FvtW-ZFJkoZr#GnMH)KpT|eazc!9r}(u3L?Z_za2Mc zQ#bfMWb{Fhy;aoVCCBC)<@cA~bi~~m2~`azpB%vR?-h06I&`ZblEW!L1{*j z1FhB_o5f>u0~s77z_7_;P+EUF`Y8Bj3}hl0&(8X3zJgrN-~ga1loVC zai*wfay9-gEas8IgDZK&p=?B^3v+Nyc!jIzg%x_fUDl2nfwzare^tS z=M7FP${V3yc-YENCj2gIU<8483p;+hCyyIz%(Oy5|Ni3`%mp-X0R^A99YC+`pec+~ zUY$C-2)ZD4(IW@E{$k>S?JTEA3<23ac}T~w&YXqCKJa9#&fA`|i`5}PYf@y)MOS+dH**<-}fQ^XI`EEXJd%zR5y>8w^=nJrd;SJ0yBufd?z9ax4aWfX_kK znA>xtBNNEpmWR6Zh*j4$NgiPfd2S2f!5=JUqN=u@2njRpi3jc}TrBF}ezwLa_U3`> z#vU_;>goTHerqMqN57WaA6Vy7nP9?P8X_yxKFN8M8+V(L5SL}IeOzK(JT$31P=8@0 zaA8q&d!&O26Z&y_!fPB$?LfhX`TntuLm6% zTt%}lwq%)F+99z&Itl3W#*ByNRf|uZ62^z6PhcV$t1xSz&0{ayr>L%GdjtEK&*9-A z>$H8a^@JfjbR4z}P1I}q?S~~_@@)KfL4|}BO+^L%R`| z?~Qjbf*Yo)3`;tENOd@46qj8ps_6?K8b_~fI=F&pa0ZV60^W%?IuJ%9Do+WxI*=G} zudJUX`yzFBTqk^spxqFEXDzhY^yda0e!|gAP~-OtmHPeZW3cXu(bjfmMKcKbXt29C zs}Oc{r?~H|4A_!Vg#9kO2E)j?&4&pc6lq(6{P?1DauZKV&Rj8L{9jFZW8^%zt*hm;kn*Fo(dRxB0R^UX4Wn0v2TY1Mqe{{0y79b(x7Z%4 z8zqq7L!^^ott=CvY827b$iQvWZ}Jk@53Z`QAM-=RnD8V^EGYf@n{_K=DLEMjW-O^b zjx=uSR#MBzQ*vN#MuDMeXEr}2{M;zQJQ)9d>y14;XV}}%awu#v`n==3;Vl2)b%}4t zPh$~Y<)pF?hS3KqmH61F!L?+FDDW}gZPOa(M?MIvME#GUc8ZMR29%E>(d(ukxnssR zp$D=nNkpt$G%=A1oFvi4-wH!6+VGSe;%P^r;x2Gm?^O>c!iy)o28M%(l9lTnA%ib^ zbuZieF(AR0Cc{q9`>&E>4-y+02?zJBl)2o3FWS(?gDrV>^1R*~~BvtjOXzUp*?i*c9?WnwlWx0i9w#-N9 zxZ^%0sOxRv)&rQ9!hB4}<9gfutD<_UdFyHP4j}+&zpFXn?UV z1)K6=cae=nU%RQiU<`aktZ)_IdK3VG21S^$UL5x2p_X|Kw<96YU~uDcI6?UAl%uBZ zTZ$=6KyEf3tiYCmQ%xP9s2A)AjW2&;kQ~*OLwjY371b3|xy((bA{Mm>zQpe2<=pE- zMyexGzv{{{UDF+k?6UrquL!K>PrOebgY`bN8fH2ES-Y;TN$%8qlGg#e@2dJ)9eh%> zZu4L`J>g-uL{Mt+5Zkq0^xzpj+HlVp`Bvd7GbB9J_dQXY;yc?sfrNgQ8kffG@(2G4 z1T=h?6&;TZ3dy@|Vs!%GBgPC$@W#XeEm>;Y)I=yyuMcpIRMNGnNA=D<@ib*=1^ZN6&?Vtl*wI zji=f%Dg4>ZQVK;gaMXc*kKYIQ){Ec0XSu14MrMWz@Eo$MJ=piz$GvEy>M!BAbvilU ze>YO0#BdYKI*yikJuXu`mga=@(;~*VR8CWm(a}q^vkf_etIHCGqpy(u`Z6F^=7UeP z-)1<-yp;m|4U{(%0Xb9UMc=!VNRnhvKK+RKk|s^25Z&WMZ>HfGtd)mPpKn^?WL_|g zq9RH9X(E`q9Ho}Fl{HL9rvw#h(wQJch5TNW{rb}KThq3cx#ocnE|-?G6)>VPXeAR1 zv(N|)5f~p__{u1U316Cxnsh5e*tVNK2&xvavzt7q{;`S~)gqzn!Gs~vd7^Pshw(|k z<@nt0s{C9i+z=@M<5yZKrjP*BZ;SR;6+nZ3T+-21nGI@^{aari#fjdEn3j zG$pn;uk5=)pXsS>Y1}Zr;C)22!g5P_RwWifr$s-|)sH_hKWfnlp7U4N1p~0YuTk0M z&e}ta&mOPe#&In6|FTB3a6t*&VKxVSU{wPR)}Q{NF@{IBBPuK>A|EHWT0B0?st2E3 ze%t z?iTZYRz{&}A`=9bA$RXf1XQ!gAFP+mTMKFcOeIwnBL<)EK33Fab!PGeOT~5G`FQXp z@j&kut~;Ee5C81N??rQXM0>7l&KI;-yD7cmagt!_dD`CZKn0}q=B+)V57%`6&b z534yK41TM*!HQgDOVA~m4~CF)6mH9KSk)p*;gRY?*he%92))*DYQX|NzOZcb{p#u< z!6YVdGiN<;0NI-MO)rlxZZ*uhe!J-M;PRl^NN|0*{C0MQ2>94SB#f>44o@0rt^oxZ zfMx=pm>vC_4}%*xq!i)Db6Mu_#NzzQe%OgSB7y$pf@Z4FhAKQ6M~SaYz&CxpjDD_^ zxjZ(m(lq7wCe@}srrPyplBFHT@pz<2v!wB(P`p|JXs1}iR9CS8j7-6@jgK5|N#0j%r|X&L!)z-0iNw!@uMaZRb%F5b%^e*ckPA$sVXMBs_c_*61*eI+_q zs@AIE&oblhoKnDtY@F*34$K=n1HweRPv}LdVq1gZz>9OI6}|{8bXi?)O)=-0X|1E9TG2v!nIe z$)z)Pp2CgM+}?YY?VoFU7T0L*UBQS$aZM)M^)=d- z{D?3-b<7<*lGdW1-W{U=h)^u*mS*Bzq`SaX`^;9A6MjaQ zT@{42VBXR+cTT`RH|cF$dE7jMC&|_njuPMa-9ZCLr(%lMe&P;hlDeMGyagN$|meuRYBW=gLpmxI`#DVs!MTJbuOpeKTaj#=qWRFH-g9=ABV_f-0=zPYy>1cf!Y@E+N=09 zSa}5an_XN5XVJv)@Z}ih-@0x#)o?~O>~esTi&|EbFVroL5@i`|#y`$}q4&p^7IlLy zWRWTV()UtIA%IrU?AYTTqNtbym$!{*Zw7;uIR(#AhnLU(0vOhMnN5z{4F^8TEzzC{ zYYpd-(*!b)xHY-^*Xp-H$rWgpEF}A(UzrR~S^94+-dEqi#XYkm>AwFuvt3)k@g3pP z=c$@BmLl!gP~WU^4jq0aJvPiMfC@LrE~Ux30bULj_$Qd`QrorvwO2?|=|UX5uS>lv)pNhK*Sjtj=+{^+I;tiZL`ql5N}wCq@IG9J0J^th2t3_z8;i zpw#uT6@c+DB(k(Gy-`<>f4b9917h0=w|TnPjx%a;VuYW=*A>3*`|z1PZb{`ff=TU% z(y6KqGd<|d1YvhZm4m)C>-nkUC;skTc~ynW>W?y1(?_%v;Nzup9CF?^GqJ8c&{^SNg(<>i~B0nu3nyTRPo*#Wm#xhKi^Edn7Z zZS~iUw+14*kj|ZVx|K~b9*KxAXy3{&>@0<8Dg*sie5WoWZXUWF2bXgh-bP8CV zUM<&9>q7YEn1?I5X?fi@U_HFbzC$nq8dx4?(MTQO48G9PvgZEf1NNZhB$t>{6!^#I z>Lqf8ZaU#J5=M<&IA4oIRpsrlNa3>c+mE@pG(%mJ;91h+d(VYh(^Ebu)Q_A>DQP^!xF;wTvM=h3abYS)nIvD%QnUD9Zv=a_%<-fz-qpry>eSqls;zmGb=?C-w~J^z_e=RZLjjS=!o8r|Id zCuubFFKM*G-;_pk{+T4*$dHJh4X9$4BVv%ZbF?wE2AceT>*pVkQ2$qTvfufg?N@aD zgW_6~8JNTSR{@45;AYG~h5fJchb3U6V*agR{r{>VCRR?aKi4KUXtYMzG$NedX_O$o zPdk&a+njeze0}#loCiANS-?PX+81wv$RXC*Y+iDgq*>D8%@_LpN|(RU%Og)Bya8@i zG??&LDA6)_$vZ3oKiuqYzZcKvbGiPiH-3^X@MdpSAsFo8d-oh;=)EY)K+0TWMW!#i zIbA1rCkEtQf(39!W{MMK#gVveYwc0Eb3wF?We<jO?ZC`1kiGF4p24&Q~1>KImH~ z_ooIDL>1xEMA6Yu(%PFxYWyj%Bvy*VL}!Bs6AMBST|rm8_MD&9f4BsvrcZzrJ0*gMIyCXzdA8m^IzOv6p>yQXM z2aXLyzj?QsN&D^Pt$1Acm1zT0c=TkB9}e>|qCiMX)C+yuR8mQiSCmD)2{``A+r7|T zA}D^w2q$D{ov)pFieR%*wFACNL<{G#T0{z>WrD-kzP@;(37;>WEpcX$G)5JuprnBB ztfGPb$@$d^j7B;ha3_2%u9zTmipxkioPXtn7gSo_wkzKI%H8(T8YN#CJ zajTIMk}tKq-r17L21>lKJW&?K&=%h47fI|&NZIi+Bn^!0;==FA;~PldOD)9FcDW7+ zI6C;teI=sIB69kibT_ne2y~4XV^#@;V$BWj5=NpB*UQ*VqzgKIT68{7#>(nJPBJ}w ziA#fhY91#s3OIsLME94R>G<`})TZ(TUz@s$REWsbE?iU4R_`q?gTC)1^?fZYY5hnDVwV3H$N}UqSM|F{%zOB+03dqX-RD4 zS$wkCsII4$n9N1}e{}KZMPuQ@<&K9{g_l{K`uPD?pTl`*K zy^@W`GZjVgC6!yD;%wX6tk5x?1_}Kh*fJFdlP*4AXW8oFpTkK5IBz!o9+4D~h8;Jp zYsjeXgj=UmlSP#f-LX%DcljTN2z*&5;7sYL@xNDOemT8dKAKv6FK0ExSp3jN*OZh* z0-dlHlw4OCj`{X=Nh9vT_t{nP);J}P_?Yxg^^ud(Yq5MrX>M&!953j&Zf`6AUsIkF z8%UEtBPtysCKDo2aDy>tNhpL)9!G4%F}qn4^x1p$*A8$s8exxVCBb0nsFZwyt0Ie# z5L-Vi6~v%B!AG!J#S(75WsI1_9eC|g&*HR{(gI_p_&Og+$B$GGUy#vKZu29*)GQ!n z$#nevJS@8NGHm-G9otg~YQ5uaprGZwbSZ?rz&?Lm>t*W@ZLXH<0y9xzg{+&lTv_>@ z7W$65Uvc){S5p7hs&Bk=N$^4|q01P(miI+7nHf5ys?X!z;>j$M#CnNCKh50t^X%6| z-`_GpG$bW|ubP&M(A7t#xMcrBKlm?uKSk#@)ehqsSz|)=Zi6N8k&Cs1k5%5M!J zh-*RWr1I1;Nl>(n*ezQRdHvW zMU+9Bf$J&1+L3nD>kL7{wAUn|A}iPF-}n{8`D-Bh!_DWvH+D0zva$TxFA3ngK0Z2C zq>ZurUN2#u>;_?Xa756D;l}XQ1YInkrdfC8bZ2=hA#AsA`rz@S@TR7Wf#uxAI<2&{EHWH!HD3vhTK5mWnUNT;{f z3iYtOIY0HBA`Q5CQa#wAO`q6fPCwaW4ugZ)39#GpJ?wA1Jtn_BKTW*3KRmsx*mXX< zg!(8-4+)A=m>b<>&E z+|?NWn}ha~jqCNmo`*PAMZqU;L8PH)#r3Ut){JD_li_*`vWBGnOZ;8Y6Su9l*6YEc zy)!w7(^O>=92?FRDIOnwhI3xc(??ml;ER4-pA166z}76VTB!ATBs}M?42I7Rua1b$ zWzo|@P}gv6@0i8n&wVSSRpdp}%WV&wUsPdEGY;BpbktI16)n;;+)f@T_iRM*X+uAJ zX&U|UU@EiqSRQ+oDxuO+R6ofC(Y8i~JVzhsJchW0Z%NqmFwee{a26z^n6Rj%oJ~k% zHS^#q5?Cmv$s(X$>f9_cl)Q_LaN|G(kB1U6yENWe#?uXRBpYUyZpLA^%U%EDy_~$) zcN5KxEg*o?-LPWH9xBUL`^i?StmB& z@_ui(o|WWX#aFnq5pOc|bM#asIW5e>-~|xEwB-Y$xLOc~*VadW6`^A+1_`N3&DQQX z8)HL0cI_}C^tkn1E6q@Htu^bnHL>9D2v>Q+POiiSLs1-7VGx)YLF|r*o7K+DXD<&$ zE?XiVs?Nm3FezrIBB^W)83hs+Q^q{{*-%*fqG@<{o@b9GPxzJ5u87>*1ay>1Y{>yp z8*D(dDERfAfa_FyJY37h$8{l;4_ktgFIzrZejEH{s|Y7a%1Za%_=JrK->Jk}<>Wtv z)f)$-AcC5F%z+eYc}#;%yapn^dU+=KtN5xymZ9i+d$WzuR%)utgOkVhN) z@#l$@$x+}W{U;*vuzoYy&DR``%&wFGitH(DYk#t&DBj>3)eqIJCLi}KBoP_9hfH=} z4h?RT5f0%CDX5{X3S%$41GiQZTht%Vwrz|_`JgI$AfJ_C2MhIL`szjcqdGtX?n-$! z3hpfnAJaK3bh|%A=sjFDyOzT}98VLrQn)F)%+ncwHxN&|fy^YdF?vVRIQk6vtig`Hm!=ZFK+r=xWz^#(Ro{W|Kxfn$Q z>_~KE4ELMn)B84Ro8?488L+oRb=*@v3*_(ANi)g}*=IWnN#335wo$MzIPzH}plZ;TNalavGM`Iz4V9d0XGc>*&3_o~1 z;ZfyXv~mP6s*T_(Efh?0uU@?WBu&CK1COyBfH+dMVBxRcI(o(JGij>I1H4PwW}Y|+ z5X`^!Fj)u=r7Pu;_9LW+83O9p zvqNPk`ihUBKDkP6!}oJah5Mgg7q{Gxd`lcx26yRDCVHeV3JW>~8}2b@6U8=I9zs-4 ziq+Z2e~dvItFYiubXJXI*ViYR*{EK;c%pk{t$hNWRg{r?&D%KGw8{=dfMvL`&*oUO zx8sgHW6uGIMJ$dBBbIEOC0KT5S|_-fnDhq3lM;#% z+DJ3BV~vu)CL&L_^izm>08)6OX3VrPZtEx3ntu%Ac$}|v5X*q~q^7x^6?42Rm77r! z(W*X(@=y2{Xk=Hi^o%twVe=)m8`0lz0@cESz-?#J)n)!XvbuI>x}PC$)_vK@$A%QB zL8JNxed>0K#8UYK(LkRO{4>`L-;lAlD4;^pQs(lnYEd z?AiC}VpEl*4vrO#%tIL${^hHj=*Ma9o>S}@37^t(Z0>I#eTE#a3#F^#$16d##BvkE zEzr5tu!LG;=}|P&e;k(OTTupk+XFuTq-qn*o9Q6(f$Q5Jg7)bTSvEnBlWfb^k91r% zm2j4e%rlgauJlhTu2T25ciH!bpSO#sg<+nl4o>`5Dt5|5nAqDQix(yM{)N(dospSo zPynJqBG$Q=0OP!+D(eSny@F(m@v@cX#j9bkB#>l($E*&4X zjpgvymDR8^{aH6Yvz|l|jd6pB9_>Tc=uzUXwDx-%W-jHko`~7k1Y5A<8Kxl!dv%5a z=M2&iBvMR!ux0DE-p%B|bhF~#F;@731O{B zm$+o5IKw@G&_PWzy;)uB2&XtA(+XxekMEz>K%(91RmcZiAn;FPBk^d!twio#RGe7VOU z`n^r&%I#;mZ`A@{a7AfGmi*2A!KSDsq?5vjp|f$2rAEBN&{+Z3&bLNvb|7BLD9nVo zf&+Y0Xbx7Z(1`m3VL~7eeFf8qLALXvCdNI>BrmZuuQMXNL&NN|KOP2!BX;y0m&@eo z#=h)9^yt?@^+d%W_R=rZp)gs%KWTRqo8bUjxxds{eze)^Mp%wH9XwqOzsr#e+aU@u zExf{N*8G+?np5u(5!}htbW|nk&_?+IuQxPB<(R?g-U(ywzNRvQNlANnIl6|)BFL+X z`jQ2~#?sc&+{&!4SE*OMDRx0rL|b~5zX#nxcG z&lC*W>ebqHONN%iJct!8=fJ83U1`FuE(@d@0$Z-;n_ zF4B_6g7h*yw#4Gy{#XlTWY~%tdqRqwkJ}=I9N#1^!;d+ zD#_R!tdvWkBrid^D@O`D1#3v8h6bh|Hrcx_>Ajbx50BoxIq~Cu?M?xk8}GeSkVr7{ ziV}hhn#5Mn850I?jT4%K>6aw1Zy41^pCVG8UOr%$r$t`oVEdy&JfYdD?ab!nEm!$K zE!LDaET$4u77qpzH`5M7TYbf8cMI@Q3!1=Q)TkADV#1&Dm6fQ^-kqw7*-h0a9?I7z zF8x)2`6!j4fJLGcbd&q&)?R=rR@QopKj2a7EccaQe*wziyty5=XLh<2avT_;y4>(h zz+y+dSruDGb--E{ux&Rzw8A0#li76aef4JX$3qVQ4!#i*8H797-$u4|itL$2`1{emi6zHpI^CN=ZePXKUf1 zLTV>)r2;v>MI;CRkPiK+m}}&_W~tpRY}ifk8Xxz!u}Aqz5QyZg*^n7&k&JgUrsmr1 zMAE&PHnDlvh=;_SWp|=TOz_5P2lO!Mb7`kw)6;zR7?NqM;V}~`A*B)cV4^wuv^o4U zrg}L(u`MbxU-x%O@-mswLVUR+TWk7vp7m5K87qbTcW(-cmWS%*RSYfa_}NxmBs1SR zMcVm!VHgq=N|F6&bMKC49OtQ!w=JT~pWhn2$Mo*t4AIChT$6p3;?{XF&w%;CH z>kP!&B^QX0A#XCJ9&ungmC|q0z@t7Mof>C0+-U5*%inKV(mWXdkj=ERvj!&^2 zw{S~yn=0dl%|R8{bB6rBLl%(kb4ipDC|@fq*!sN36zJuKBaTvTIW`z7+z(sxGd|i( zVRdhRYqybis4AdahNE*BY{(1|J8qEFw|**_j0Vvm#P~6>hTwn)ZmJv3~v9au8_R8zc0Y zboKQdD;BO;-CLMs?qeAZH^`|dnzdc@jP{ntIDcCtJKKZy;W^5enmFw(Z&wODW#t`m zr{g%KAI1i!s?R^mBFu@wRA3S65DqS9;s#<7xyhFldg`QF7u|`jNsUZ7?o1Nq-i_Ed z2+&=Hpo#|;w|*Vfnn*(D_ejF7tpZIMi(lS<1{9;f(;zsVb-k*Y+()ZEze=HK`XniW zqh#Y2EX6ge3?LLv?311+%@$otsz(eYp|KcJz>8bi&NvU&}jnQ{ZI}1!VX5W!>xL^ z}}vc?w#toH%SZaix4B?P+9KiOuh;|a<^X9ykDl_%0C{q|9m zbfu|%haaUzSYNu`!v;A-)-jX8Qj@LmH1K+cXG?7|aCf9Oj^P8Z41{0Q?LY0{z6(Bv zg%-Bj)8*ZGLc+Edr#JF;VN1TK%!02Q1p85kPNQj{L@w({ekLDBE%ZsNrC_$&Fs@l* z5_+Wt)K_B9R}anEin<$pTU#d?*Xak5c%*!IuKNn9onXnswiQPyud^@vr#7>B=2a{D z(+X(<2=C3(>J1Ml0_tnZ{2519Gm2RG1UI}xiAcL;{~vf1mXi>J9AwyQsK^To-CQZ< zMuW3OoWcKxyf1-^v3vVRw(Qv@j8L*vv(F%VrK}Y~s3>VqC1u~UhR9yF3W-7?lwG1i zB_wM|vXx!of95`CrgP8SbKf(+p5Hw0`~IKLw4c0!{WK?@=#i^?B= zd1K$Ii@}k~w)4UUWXv95zVG7I(os&o(x&GfxUucN)`N%he+Nc|d@i|X&B-olA2#$y zd3ds8y}$?2?2Zox9*J_v{AfSD?B|NRJWG$XaPc>>`ECQx9{nB;99(*}==OntQQ5aP-pD@$W zDs!<5s8z3^ae8N;oF@}=){g!;UG&^&!w0PoKB4EYZylohK0G@PH1SPHE~rQ>VE1hLX)MC%%ck7M1g;ZN| zQ~&%;=dSOlbTZxeE#}4*gIdo%{MxqGC(pb%VM^e}0?)hW$G$f|kv}N=*p>2t&Ew`D zI?RdSH@gtLTQ?}Gfqu8zC8OKl4nCfGIp#rdCcSVl5Nft1zB;&7R6h1_U7d;Hds*J zX#JWIllqSNIIZ9MD?>e;ayrxv`lS2db)D!v?nQ~Yb7Q(4@QX9CeH-~Q{DfOShs&FS z7Y-TnA}#+%ZsDObju%GNEnjDs=rCtv{60?D*0awYS_SK+rWQ4^?~#?a+o3KuAi3rB z_6egJHv2sH`@8zb+$=9=>O{UZs~Oc~vwoM(=0|$G=RCf1tmi0w>kkX{R@J{eqsXWE z`7)PF8$1?QY-u|p>_L;u!X36Q`6bP5yc=l+_-|-jadU=!(O2z5%REYgD?hKU^{j2| zGE1$aHgo-F?B(Yi@B8&t#o@H}6=$B7Yzov5;jkMfc>I1cKkr4Wcz3%{mzNKwn{R2M zJ-CJO&h3^r%|z20rbmD7=@9H##2;5=#vZl1)`nxA&HJ8QdF15CSUb=2SF&}Qj1>Hu zr~mNu-~GJ}YH{;M>$^uUUM%BKx%+^PnNa(YUGFc^$y=iZpY(T>9SGi)y3HeOi_QAn?aNuI z&A!hPi9ej%w}`FxDkIwbeQvE0uLE{J`@3n9!HS^KNdtNu@gH(Xp;>ndkc9XXbu4j`KE(wrQJrb$z#u;6b2}L6N z;nf#Cg3PaP&Wm4YanB;l!~c<;+l%D9`0Jf4zlPXm6`1#0n$@7)*Ik~Uy571`=fj3> zA9*M9jm+1G+fGRzV)Mhk?u!JoxvowtmY;B5Z=Vy~c*V<<)q57X*ECF+e#32U?=zKq zg~Q){ifgw2`2Ej4u7B@b+jXE%%YEscYp=-a$Y)*fj=r1l`AMTmITvqU+x-DX#oHwj-)8$S9^q14+JD23e!Y{nW(#cdeqP zd^6qM8?=cI*>LELmWN?V+=e^9Zw3DnubJjK>S5#A_M>%+DzDpmip0J8mbAQCFT1;U z_RQsmHM>UE*yb~{!^8+zy`miR=jlfdZnR17SNH0Zd%4#${Q7my9O}};dD+wQ=0@wh z^WBPoHggMr=8ARsNc3`cq<;ogY|m z)?jVi^>#+*Jx3H@hX<5>(E&-<#1`Kgn6;||hor|_(p4*pJd2J#C#-3kY z-&B`ms&$wOxU|6Ad%<8@6v5%2Ys()X-h_bMBw zH_-ZF*r@N0>8ldo_XxNi)39Ynk7hmES^qQ%y3zi`knN}HWY5nr8yFEau6e=1woMN_ zuXn7!Q|LlL)S~T^4}9&iX<@?HAm5GIBd$DfF6uwBb)0dsZQ&C zU4GG3bF)KDK3kotUpavN`&O4Gf9hGCT5UIZVVHUU(I*z1UF0*+XLB6CRp=4t?oGwgY2E#J*$-zeBG~~HeX!QC*jDE){9q%ubvX| zsfS*wR-=d7M~69oGCmdCw+k=&_FPl#9Bx(%N8fQ7X*2q}vqa+^IfiM=5_(^I81PQl zF#FV{q}ae3O;Xn8u( zI_7lo@->bjM{G+1*&TP@GxOP0bnWPS?U~6pw=}n5zt_I~wc_pvYff2SVoX@c-RE5! z&RkdD(J^&nN{u(#<*hmltK4a{X1(R`Jbvt$?4Sa@2X#yK>3m&LI$(wGnQ0$8o;s%c zJy`tCaBH&zSIpl`Fz1B1u*MlLY|+lxYQdO6^;SPC>Au-{$VE|KzrkI0+={%tC2qUk z!z_b-n;LpO`1|N|_?>YjeUA@+71Hd*dz*-z&X#|I2L>(*d2=by=?`~eXwj+6va>l! z>vTVSh_n8*=79f=WtLyA?bl1&KlO==>-*zQZRd*nnno3_DKbvoWM+N+^6nyw89sMs z?f%YpYgA-c+0wA?isio&#&=$J+w{!0X9ba)gU+N05(@Qq1yp=`@*uQ($Hr62`>bvy zep)oU{q@ZU%Xg1jmV2>lgMg)Hei={En>Mih%AI|h^_sEU{`T!FJfFU)fmsiJx0}y# z+Hq*Yh_gpmM(p+Rvh8pvXWl-}D$a!DXHmtR$OEj|9{0KB{n(%Dtt;(Y)a+A+`LDC= zysRMKOxGzn-@{foO*KExYB_n)Fz$l-UQvhko9VgprrJ+m-eAz#?Q_Pin$l1A+8W=p zgVs!l%B`FoyV;86l5zEUrd^|2&%qCPCd(*ix{wBLgiE*QEFTKT4`vR<8 z2Ao{D<7B6v1~qQ#)Vnw5Nc+lZ+>-uR@Bdo5yUW>1hx?3=nB6EbgJIcw@Nal#zShb|Ati&A`N23mGl{uAuY_;;1qePP)HdzrO3=P2kru&T4kf@5W^Zm%YtXPKU0Yd_Jy1e|OuJeFy&;e$J#| zQjpp30+ZWK%Ni6p#|mD)bNJOJIx$W6%?iP@7vnq4bqgQb=IL_wwzwJnnuHpz8vMKO zmo{6M&AwWrELeMnMbNR(A-mtiysl#zFwC*(m^(%rvh^-`Sq=_*t*bY6^4=*O-yUft zdU~Wo!q$EMdk&oXqOa|$WuEZ-_}7dc^?x_-!aiD_ZgnQ}{uFoDI%OMk+s_&^?#Ca! z<*(}96)gNX~L)n0ySpW8iAQc`VOuVqIQMqi$LU)1bN#jobWyp|m6 zx^*gm{qXkyEs z^CQAMr-a@8X=3xO!u!g~4sBiziL@*2V6p#8@bx7_zxUs#W8rxH4S(12hf}U)EiZEE zp10tB%K5_q3zG{%e`dPHXKDoxiniKxxKqBPyUv1TA$_~YK59H}|C3u*T-%u)0{bkB zD>&7r7Jo%U&X}+DtsiYqIlDKmPD|Y>vG2uK!!|Xk&+^^gn~Zo3O;pS+kIGR!=#7%f<7d+Zq)tx;9KF-XO5W4pEEmRoXyb4 z#FT^q{LP8(6+0Rn?P$HfOYG6*%XWp8>pf~anR;VLw~l z35SzAt?S@ozw2Fq+nybVmNojZtEg;a=gQab;K3_-Se}CfBZY4(YxSFr++S; z)8@_iM_IE+8g}_H_w&N!np#a$Zd61)Gtp`EZJok` zX85=2H_Ubi>*Nf-L%O}a^xJtfOR~){oZ9yNth8Qf{y7$(#ta(J)VS7wR6)C+1De#{ z;WuZ`pWVyD-uGU0X^~y!#n8`#+nl#foKojNuMJ!EhrJS)T4heOAK0(My3b?tQe!PS zb4%v0c6lDwR8K!|x^~2bv7Z_)_x^4E*kH!Kev`X|&ME0UIw2$h9=x|8S^~q7wXw0n=F2+A7D0M%GF(l)8_L2 zcsuTo$POClR{O*F(;ZAU6bSdiPC~u z4}$A_ODS-;ZR9g}f>y?wiJ_CGCx5=?yV9=jx`WmoZ(FdZMin1zxU%eoRin@Y->#Hd z&Hd0b;?nzzUO|(`8|o&B?{)jKc+;sDdwN=z?U+-RkiB_U&DRT7f0-K_Qn6aR{&26_ zMOz;|%)5AX!k@#rti*9!^Q|vkcD$0(FKUUfsa1J!M#8Mljb_A6^jf;$P_sKLRu#7D zxWLrva-GD5gTJQEz1HE#$Ht+dUv=)Tf>dBOMxcfyVB zAFgjb`*O+fAWrJU&695j1iJi6>-cPUVxuE@b=#T56pZ$&$Qx|3+2)sb^SHzV{@f!I zom|9IOP8PenE$2oxZ!j3le(GjNbVnGWEC{dVB+o4xpysI)(~=^B?Oz5Y+31YbAOk+ z+UE5$4a3gV$hAuIZl0`Nksr)C*k8A#)&2JA{-g7ZjL!tTT-%+?=5~yFHIp@bdyvU% zlaf1aJD*5f_&fVx&%yQPeXh;*jjMYxxACi@x=!H%LvDKBbQuw=+wuPTsJ$okdi5nH>VJID@p77h$@9I7lk@e%=De)AxZ-Ngnx;mRZabBY9(%N7=Rb)#Q*BL8B)rS} zpZx(RCi{SsDJqC@J%kS z-#_p1BH{VokV9=9hhKiPbXfC?pQc1QYCX=1a$1w(H`aD|N0YJlXEom4eauL01JlT^ zhgX$uo5Bj!XLEl#PUsVUwO06Jo{!a;5w$zon-3g*=Wq7y=8r7?WKPLU7`$w6z<|WL zXBuQ_1&W%y3fOQhV|&bw5g+w>`B>BG2p{r?Tv8;+9UAxRyIRIo|sjFm>Fsu8E}+a=AKu zvsupP?T=?P&Ku^|XU2q0^NY@W%82

    D9)(Oi>nG=VxwD9uPrc#aZEa}pDulZ4*wsg9OH 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 Date: Mon, 23 Mar 2026 11:40:32 +0100 Subject: [PATCH 07/12] remove skill, metadata --- .claude/skills/audit/SKILL.md | 366 -- .openzeppelin/goerli.json | 7804 --------------------------------- .openzeppelin/holesky.json | 1762 -------- .openzeppelin/mainnet.json | 1298 ------ 4 files changed, 11230 deletions(-) delete mode 100644 .claude/skills/audit/SKILL.md delete mode 100644 .openzeppelin/goerli.json delete mode 100644 .openzeppelin/holesky.json delete mode 100644 .openzeppelin/mainnet.json diff --git a/.claude/skills/audit/SKILL.md b/.claude/skills/audit/SKILL.md deleted file mode 100644 index b95adf59..00000000 --- a/.claude/skills/audit/SKILL.md +++ /dev/null @@ -1,366 +0,0 @@ ---- -name: audit -description: "Run a standardized security and correctness audit on SSV Network contracts. Use when the user wants to audit a module, PR, branch diff, or the full codebase. Outputs findings in MAINNET-READINESS.md format." -argument-hint: "[scope: module name, pr number, 'full', or file path]" ---- - -# SSV Network — Contract Audit Skill - -Run a standardized audit against SSV Network v2.0.0 smart contracts. Dispatches parallel subtask workers to check spec compliance, security, accounting correctness, edge cases, test coverage, and code quality. - -## Scope Resolution - -Parse `$ARGUMENTS` to determine the audit scope: - -| Input | Scope | Files | -|-------|-------|-------| -| `clusters` | SSVClusters module | `contracts/modules/SSVClusters.sol`, `contracts/libraries/ClusterLib.sol` | -| `operators` | SSVOperators module | `contracts/modules/SSVOperators.sol`, `contracts/libraries/OperatorLib.sol`, `contracts/modules/SSVOperatorsWhitelist.sol` | -| `validators` | SSVValidators module | `contracts/modules/SSVValidators.sol`, `contracts/libraries/ValidatorLib.sol` | -| `staking` | SSVStaking module | `contracts/modules/SSVStaking.sol`, `contracts/token/CSSVToken.sol`, `contracts/libraries/storage/SSVStorageStaking.sol` | -| `dao` | SSVDAO module | `contracts/modules/SSVDAO.sol`, `contracts/libraries/ProtocolLib.sol` | -| `views` | SSVViews module | `contracts/modules/SSVViews.sol` | -| `pr ` | Pull request diff | Run `gh pr diff ` to get files | -| `full` | Full codebase | All `contracts/` files | -| `` | Specific file | The given file | - -If no argument provided, ask the user what to audit. - -## Execution - -Use `subtask` to dispatch **3 parallel workers**, each handling a different audit dimension. All workers must use `--base-branch` matching the current branch. - -**IMPORTANT:** Unset CLAUDECODE before running subtask commands: `unset CLAUDECODE && subtask ...` - -### Worker 1: Security & Spec Compliance - -```bash -unset CLAUDECODE && subtask draft audit/security-[SCOPE] --base-branch [BRANCH] --title "Security audit: [SCOPE]" <<'TASK' -You are performing a security and spec compliance audit on SSV Network v2.0.0. - -## Required Reading -1. `CLAUDE.md` — Architecture, storage pattern, security rules -2. `docs/SPEC.md` — Technical specification (source of truth) -3. `docs/FLOWS.md` — Contract flows with invariants -4. `ssv-review/Internal - [DIP-X] SSV Staking.txt` — DIP-X proposal (source of truth for requirements) - -## Scope -[SCOPE_FILES] - -## Checks - -### 1. Spec Compliance -- [ ] Every function matches its specification in SPEC.md -- [ ] Event signatures and parameters match SPEC.md -- [ ] Error conditions and reverts match SPEC.md -- [ ] State mutations match FLOWS.md -- [ ] Invariants from FLOWS.md hold after every state transition -- [ ] DIP-X requirements satisfied — use claim-by-claim comparison with verdicts: MATCH / PARTIAL / MISMATCH / GAP / EXTRA - -### 2. Memory/Storage Safety (CRITICAL — caught our worst bug) -- [ ] **Stale memory copy detection:** For each function that reads a struct into `memory`, check: does any subsequent call modify the same struct in `storage`? If so, does the memory copy get written back, overwriting the storage change? -- [ ] **Storage→memory→storage roundtrip audit:** List every `Type memory x = s.something; ...; s.something = x;` pattern. Verify no storage-modifying functions are called between the read and write-back. -- [ ] **Flag every explicit downcast** (`uint64()`, `uint128()`, `uint192()`) — is there overflow checking? - -### 3. Entity Lifecycle State Machine (caught multiple HIGH bugs) -- [ ] **Operator lifecycle:** Map full state machine (registered → active → fee-changing → removed). For each state, list which fields are non-zero/zero. Check every function that interacts with operators — does it detect the state correctly? -- [ ] **Cluster lifecycle:** Map (created → active → liquidated → reactivated → migrated). For each transition, verify what state is cleaned up and what persists. -- [ ] **"Removed" detection consistency:** Grep for EVERY check that determines if an operator/cluster is removed/dead. Verify ALL checks use the same condition. -- [ ] **State resurrection:** Can any function unintentionally make a dead entity appear alive? (e.g., setting a zeroed field back to non-zero) - -### 4. Double-Accounting Prevention (caught HIGH bug) -- [ ] **Resource cleanup tracing:** For every counter/balance cleaned up on lifecycle transitions (liquidation, removal, migration), trace ALL code paths that modify it. Verify no path assumes another hasn't run. -- [ ] **Sequential operation analysis:** For critical pairs (liquidate → remove validators, EB update → liquidate, register → EB update), trace state changes and verify no double-counting or double-subtraction. - -### 5. Reentrancy -- [ ] **Completeness audit:** List EVERY `external`/`public` function across ALL modules. For each: has `nonReentrant`? Makes external calls? Document justification for any missing guard. -- [ ] **Shared slot verification:** Verify all modules use the same reentrancy guard storage slot via `SSVStorageReentrancy`. - -### 6. Access Control -- [ ] Owner-only at proxy level (`onlyOwner` modifier on SSVNetwork.sol) -- [ ] Operator owner: `operator.checkOwner()` in every operator management function -- [ ] Cluster owner: keyed by `keccak256(owner, operatorIds)` -- [ ] Oracle-only: `oracleIdOf[msg.sender] != 0` in `commitRoot` -- [ ] cSSV-only: `msg.sender == CSSV_ADDRESS` in `onCSSVTransfer` - -### 7. Cross-Module State Dependencies -- [ ] **State dependency graph:** Identify storage variables read by one module and written by another. Any variable with cross-module read/write without synchronization? -- [ ] **Coupled state variables:** Identify pairs that must stay synchronized (e.g., `ethDaoBalance` ↔ `stakingEthPoolBalance`). Verify all mutating functions maintain the coupling. - -### 8. Accounting Correctness -- [ ] **Per-operation balance flow:** For each operation (deposit, withdraw, liquidate, reactivate, migrate, register, remove, claimEthRewards, withdrawOperatorEarnings), trace what increases/decreases `contract.balance` and each accounting bucket. Do both sides match? -- [ ] **Cross-pool isolation:** Can any code path cause ETH to flow from operator pool to staking pool or vice versa? -- [ ] **vUnit math:** ceiling for ETH→vUnits (`ebToVUnits`), floor for vUnits→ETH (`vUnitsToEB`), BPS_DENOMINATOR = 10_000 -- [ ] **Packed types:** non-divisible values revert with MaxPrecisionExceeded -- [ ] **Liquidation threshold:** vUnit-weighted burn rate correctly computed - -### 9. Accumulator Edge Analysis -- [ ] **Zero-supply state:** What happens when cSSV totalSupply is 0? Are rewards lost, deferred, or correctly handled? -- [ ] **Regression state:** Can `accEthPerShare` decrease? If so, what happens to users whose index is higher? -- [ ] **Dust analysis:** Maximum dust per operation? Where does it accumulate? Can it be recovered? -- [ ] **First-staker advantage:** Can the first staker after a gap capture undistributed rewards? - -### 10. Governance Parameter Validation -- [ ] **For every governance setter:** What is min/max valid value? Is there bounds validation? What breaks at 0 or max? -- [ ] **Single-block attack chains:** Can governance execute a dangerous sequence in one tx? (e.g., updateQuorumBps(0) → replaceOracle → commitRoot) -- [ ] **Timelock presence:** Which critical governance functions lack a timelock? - -### 11. UUPS Proxy Safety -- [ ] `_disableInitializers()` called in implementation constructor -- [ ] `_authorizeUpgrade()` is `onlyOwner` -- [ ] `reinitializer(N)` version correct for target chain (current: N=3) -- [ ] No storage slot collisions across 5 storage libraries (verify keccak256 strings are unique) -- [ ] Fallback function routes correctly to SSVViews -- [ ] `msg.sender` and `msg.value` preserved correctly through delegatecall -- [ ] No module uses `address(this)` expecting implementation address - -### 12. Merkle Tree Security -- [ ] Double-hash convention verified (prevents second preimage attack) -- [ ] Cross-cluster proof substitution impossible (leaf includes clusterID) -- [ ] Proof replay across root transitions blocked (staleness + monotonicity) -- [ ] Zero/empty leaf handling - -### 13. Oracle Security -- [ ] Vote weight consistency across voting window (totalStaked can change between votes) -- [ ] Oracle replacement mid-vote (pending votes from replaced oracle persist) -- [ ] Multi-root voting (same oracle, conflicting roots, same block) -- [ ] Quorum unreachability (100% quorum + integer division) -- [ ] Oracle liveness failure handling - -### 14. Flash Loan Resistance -- [ ] Can flash-loaned SSV affect oracle voting weight? (check cooldown enforcement) -- [ ] Can flash-loaned ETH manipulate cluster balance checks? -- [ ] Are governance-sensitive calculations resistant to same-block manipulation? - -### 15. ERC20 Interaction Safety -- [ ] SSV token confirmed as standard ERC20 (no callbacks, no fee-on-transfer) -- [ ] Return values checked on all token transfers -- [ ] `rescueERC20` correctly blocks SSV and cSSV - -### 16. Event Completeness -- [ ] Every state change emits a corresponding event -- [ ] No ambiguous event reuse (same event for semantically different operations) -- [ ] Events provide enough data for off-chain state reconstruction (oracle, liquidator bot) - -### 17. Guard Consistency -- [ ] For operations with parallel implementations (normal liquidation vs auto-liquidation, SSV vs ETH paths), compare conditions side by side. Flag any inconsistency. - -## Output Format - -Write findings to `ssv-review/planning/verified/audit-security-[SCOPE]-[DATE].md` - -Before reporting, check `ssv-review/planning/MAINNET-READINESS.md` — skip already-tracked items. - -Include a **Verified Safe** section documenting areas investigated and confirmed correct. - -For each NEW issue use this format: -### [NEW-N] Title -- **Type:** Critical Bug Fix / Security Hardening / etc. -- **Priority:** P0 / P1 / P2 -- **Status:** Open - -**Requirement:** -**Context:** -**Acceptance Criteria:** -- [ ] criterion - -**Agent Instructions:** -TASK -``` - -### Worker 2: Test Coverage & Edge Cases - -```bash -unset CLAUDECODE && subtask draft audit/tests-[SCOPE] --base-branch [BRANCH] --title "Test coverage audit: [SCOPE]" <<'TASK' -You are auditing test coverage for SSV Network v2.0.0. - -## Required Reading -1. `CLAUDE.md` — Test conventions, helpers, patterns -2. The scoped contract files: [SCOPE_FILES] -3. ALL test files related to this scope in `test/unit/`, `test/integration/`, `test/sanity/` -4. Test helpers: `test/helpers/contract-helpers.ts`, `test/common/constants.ts`, `test/common/errors.ts`, `test/common/events.ts` -5. Echidna tests if relevant: `test/echidna/` - -## Checks - -### 1. Test Coverage Mapping -- [ ] Read every test file for the scoped module -- [ ] List what IS tested (scenarios covered) -- [ ] List what is NOT tested (gaps) -- [ ] For gaps, classify: P0 (security), P1 (correctness), P2 (edge case) - -### 2. Systemic Blind Spot Detection (caught our worst test gaps) -- [ ] **Parameter coverage matrix:** For each test file, check: do tests use non-zero operator fees? Non-baseline EB? Multiple operators? Multiple validators? If ANY major parameter is always zero/default across ALL tests, flag as P0. -- [ ] **Fee path coverage:** Every function that settles fees must be tested with concrete non-zero fees and verified against manual calculation. -- [ ] **EB path coverage:** Every function that uses vUnits must be tested with non-baseline EB (e.g., EB=1000, vUnits=312500). - -### 3. Balance Delta Assertions -- [ ] Every function that transfers ETH or SSV must have a test checking `balance_before - balance_after == expected_amount`. -- [ ] Check contract.balance, not just user balance. -- [ ] Liquidation: verify liquidator receives correct residual. -- [ ] Operator withdrawal: verify exact ETH/SSV amount. -- [ ] Staking claims: verify exact reward payout. - -### 4. Test Quality Deep Checks -- [ ] **Mock fidelity:** Do mock contracts faithfully reproduce production behavior? Check MockCSSV has `onCSSVTransfer` callback. -- [ ] **Commented-out assertions:** Search for assertions inside `/* */` or after `//` — flag immediately as P0. -- [ ] **Echidna invariant correctness:** Read each property: (a) assertion direction correct? (b) no identical properties? (c) helper functions bug-free? -- [ ] **View function verification:** Do tests call view functions after state changes to verify state? -- [ ] **Revert testing:** Are reverts tested with exact custom error names, not just generic revert? - -### 5. Specific Missing Test Patterns -- [ ] **Full lifecycle test:** register → EB update → fee accrual → liquidate → reactivate → EB update → withdraw → operator withdraw — with concrete balance verification at each step. -- [ ] **Sequential operation tests:** liquidate then remove validators, EB update then withdraw, register then EB decrease. -- [ ] **Stress test:** 13 operators, max fee, 3000 validators, EB=2048, 5-year block advance — verify no overflow. -- [ ] **Cross-module E2E:** commitRoot → updateClusterBalance → fee recalculation with concrete verification. - -### 6. Edge Cases -- [ ] Zero values: 0 validators, 0 balance, 0 fees, 0 operators, 0 staked -- [ ] Max values: 13 operators, 3000 validators/operator, EB=2048 -- [ ] Boundaries: exact liquidation threshold, exact min/max EB, exact cooldown expiry -- [ ] Empty/removed: removed operators, liquidated clusters, 0 cSSV supply -- [ ] Ordering: does operation order matter? (register before deposit, migrate before add) -- [ ] Concurrency: shared operators, same-block operations, EB update + withdraw - -### 7. Write Specific Test Descriptions -For each gap found, write a concrete test description including: -- Test name: `it('should [behavior] when [condition]')` -- Setup: what state to create -- Action: what function to call with what params -- Assertions: what to check (specific values, not just "should work") - -## Output Format - -Write findings to `ssv-review/planning/verified/audit-tests-[SCOPE]-[DATE].md` - -Check `ssv-review/planning/MAINNET-READINESS.md` first — skip already-tracked items. - -Include a **Well-Covered Areas** section documenting what IS tested adequately. - -Use MAINNET-READINESS.md format: [NEW-N] with Type, Priority, Requirement, Context, Acceptance Criteria, Agent Instructions. -TASK -``` - -### Worker 3: Code Quality & Best Practices - -```bash -unset CLAUDECODE && subtask draft audit/quality-[SCOPE] --base-branch [BRANCH] --title "Code quality audit: [SCOPE]" <<'TASK' -You are auditing code quality and best practices for SSV Network v2.0.0. - -## Required Reading -1. `CLAUDE.md` — Code conventions, architecture -2. The scoped contract files: [SCOPE_FILES] -3. `ssv-review/Internal - [DIP-X] SSV Staking.txt` — DIP-X proposal - -## Checks - -### 1. Memory/Storage Patterns (CRITICAL — caught our worst bug) -- [ ] **Flag every `Type memory x = s.field; ...; s.field = x;` pattern** as potentially dangerous. Check if any storage-modifying function is called between read and write-back. -- [ ] **Flag every explicit downcast** (`uint64()`, `uint128()`, `uint192()`) — is there overflow risk? -- [ ] **Flag every `unchecked` block** — is the arithmetic truly safe? - -### 2. Dead Code -- [ ] Unused functions, events, errors, imports, structs -- [ ] Commented-out code (should be removed) -- [ ] TODO/FIXME/HACK comments - -### 3. Code Quality -- [ ] Naming: variables/functions match behavior -- [ ] Patterns: consistent with rest of codebase -- [ ] Duplication: repeated logic that should be shared -- [ ] Gas: redundant SLOADs, unnecessary memory copies, storage→memory→storage roundtrips -- [ ] NatSpec: public/external functions documented - -### 4. Guard Consistency -- [ ] For operations with parallel implementations (normal liquidation vs auto-liquidation, SSV vs ETH paths), compare conditions side by side. Flag any inconsistency. -- [ ] Check that all "is entity removed/dead?" checks use the same condition across all functions. - -### 5. Dead State Cleanup -- [ ] On operator removal: list every storage field. Is each cleared? If not, can it cause issues? -- [ ] On cluster liquidation: what state persists? Can it cause issues on reactivation? -- [ ] Pending operations (fee change requests, unstake requests) — cleaned up on entity removal? -- [ ] Whitelist state — cleaned up on operator removal? - -### 6. Backward Compatibility -- [ ] Event signature changes (breaks oracle: ValidatorAdded, ClusterLiquidated, etc.) -- [ ] Function signature changes (breaks SDK/webapp) -- [ ] Cluster struct changes (breaks everything) -- [ ] Check against oracle ABI dependencies - -### 7. DIP Compliance -- [ ] **Claim-by-claim comparison:** For each DIP section in scope, enumerate every claim. Verdict: MATCH / PARTIAL / MISMATCH / GAP / EXTRA. -- [ ] **Precision/packability validation:** Every DIP-specified numeric value — is it storable in the packed type? (divisible by ETH_DEDUCTED_DIGITS or DEDUCTED_DIGITS) -- [ ] **Check for EXTRA behavior:** Code does more than spec says — is it intentional and safe? - -### 8. Compiler & Dependency Safety -- [ ] Compiler version pinned (not floating `^`) -- [ ] Optimizer settings documented and appropriate -- [ ] OpenZeppelin version current, no known CVEs -- [ ] Import paths match package versions - -### 9. Deployment Script Validation -- [ ] Script function signatures match contract ABIs -- [ ] Constructor arguments correct for all contracts -- [ ] Initializer parameters complete (check quorumBps, defaultOracleIds, cooldownDuration) -- [ ] No hardcoded addresses that differ per chain -- [ ] Scripts don't import from test files - -### 10. Deployment Readiness -- [ ] Contract sizes under 24KB (which are close to limit?) -- [ ] Constructor args correct -- [ ] Initializer version correct (reinitializer(3)) -- [ ] Governance parameters match DIP-X spec - -## Output Format - -Write findings to `ssv-review/planning/verified/audit-quality-[SCOPE]-[DATE].md` - -Check `ssv-review/planning/MAINNET-READINESS.md` first — skip already-tracked items. - -Include a **Already Correct** section documenting areas verified as clean. - -Use MAINNET-READINESS.md format for new findings. -TASK -``` - -## After Workers Complete - -1. Read all 3 output files from `ssv-review/planning/verified/` -2. Present a summary to the user: - - Total new findings by severity - - Key highlights - - Items already tracked in MAINNET-READINESS.md (skipped) - - Verified-safe areas -3. Ask the user if they want to merge new findings into MAINNET-READINESS.md -4. If yes, dispatch a merge worker: - -```bash -unset CLAUDECODE && subtask draft merge/audit-[SCOPE] --base-branch [BRANCH] --title "Merge audit findings for [SCOPE]" <<'TASK' -Read the 3 audit output files: -- ssv-review/planning/verified/audit-security-[SCOPE]-[DATE].md -- ssv-review/planning/verified/audit-tests-[SCOPE]-[DATE].md -- ssv-review/planning/verified/audit-quality-[SCOPE]-[DATE].md - -Read the current: ssv-review/planning/MAINNET-READINESS.md - -For each NEW finding (not already in MAINNET-READINESS.md): -1. Assign a real ID (continue from highest existing: BUG-N, SEC-N, TEST-N, etc.) -2. Append to the correct Type section in MAINNET-READINESS.md -3. Add to the Priority Summary table - -Do NOT remove or rewrite existing items. Only ADD. -Commit the changes. -TASK -``` - -## PR Audit Variant - -When auditing a PR, get the diff first: -```bash -gh pr diff [NUMBER] --name-only -``` -Then use those files as the scope for all 3 workers. Also include: -```bash -gh pr view [NUMBER] --json title,body,commits -``` -as context in each worker's task description. diff --git a/.openzeppelin/goerli.json b/.openzeppelin/goerli.json deleted file mode 100644 index 6b208828..00000000 --- a/.openzeppelin/goerli.json +++ /dev/null @@ -1,7804 +0,0 @@ -{ - "manifestVersion": "3.2", - "proxies": [ - { - "address": "0x3A23a7F455E853058d900f5dc86f1Bb1589b54F9", - "txHash": "0x9802d184ef00cd873e770ecabe377fb98e5fd7c422946c5d46a2866f42dc93d2", - "kind": "uups" - }, - { - "address": "0x4ddfE2966f7Cdfe1F7d4f7d48949b3AB16BCc6B5", - "txHash": "0x7f46d97d62a3f25fe62473d9839871949408b23a07bd4541b52eb4a03090523f", - "kind": "uups" - }, - { - "address": "0xAfdb141Dd99b5a101065f40e3D7636262dce65b3", - "txHash": "0xc7a324e98962c685088d1ad056d33c9a57f64770e9ee8d755dd1133552419c38", - "kind": "uups" - }, - { - "address": "0x8dB45282d7C4559fd093C26f677B3837a5598914", - "txHash": "0xb8a3be822bd5dda92d8a03a0ced6dbac1f60aedacf4970ef912a81e25cbc5bec", - "kind": "uups" - }, - { - "address": "0x78ccf8eD5A7324866B1F663938dc0923bd2Fa8Df", - "txHash": "0x4fda09cc41369a54f3b750f8f757f01721427f4f81c9f3a9924ef94d7f971e63", - "kind": "uups" - }, - { - "address": "0x4935780f792bBc06BBbA6933d900698F7E74a51a", - "txHash": "0x54836afb5d593fce4c5aa4ee36c1d6c34d1b6f379984301632e0c96d1ecb3d7e", - "kind": "uups" - }, - { - "address": "0x9883B43048697382e2d27436Dc3e7C5E44cd858C", - "txHash": "0x7eefc191d7b6fa26999d4d2d4db52c45315191d95be96a667453c55345a4a0e8", - "kind": "uups" - }, - { - "address": "0x4B133c68A084B8A88f72eDCd7944B69c8D545f03", - "txHash": "0x653a2a3ec82d5d44ca8a4f4a99cb5c7f3e65b5fa42927f6e9ae5637292142a46", - "kind": "uups" - }, - { - "address": "0x0d7F42f447Db3819b7Cd227F7b5a208C8672F29C", - "txHash": "0x77d062dbf0ab1c3f0ba58d34fe6030920e566affff2d0648677be1a413f1a44b", - "kind": "uups" - }, - { - "address": "0x15C59e2a9be515bD002be918738d43d2CC915601", - "txHash": "0x0a89a6ab4fffb4a19672ddc97915f2465672ea9993a475b5681ab7dd3f24c4e2", - "kind": "uups" - }, - { - "address": "0x55660cbfDcD33649062B6182E2ee0E4930CdCFa7", - "txHash": "0xacc63b265d8741b3636caf4dd4369688ef362b1bf5a2de398047a1fdea935240", - "kind": "uups" - }, - { - "address": "0xB7D5Aa053315c9902825CE9E30F3A9cfA148dc2a", - "txHash": "0x1842096c7db0a02b25d2efcdb18f0488bde07ca65e524c8e9dbadb0e85fa228a", - "kind": "uups" - }, - { - "address": "0x45B831727DC96035e6a2f77AAAcE4835195a54Af", - "txHash": "0x31d03fed514af9138a6fca1784aade113e22794485b80ed6c8a975879b0716b4", - "kind": "uups" - }, - { - "address": "0x6F47C9Dbe0e3a369aE0ccDFF982183881CcDfb42", - "txHash": "0xe3cfdd1b88ac3b1d654c7761e982907f799f765865375e964512e09742b88b52", - "kind": "uups" - }, - { - "address": "0x9d3F908cB3b132379A97b0E0f8171F0B42756E28", - "txHash": "0x340d08b660b8055728de7f10ef6bef6daf2537b45f8e65237ed95b2e1cd9ce5f", - "kind": "uups" - }, - { - "address": "0x5b10c20D163Ed06Fe80630935439010295AE4C3B", - "txHash": "0xa90d4a0e1be7a3c257fc7a76d58289bd7c15b025174c55f890bd96e3f05389d1", - "kind": "uups" - }, - { - "address": "0x13F6DDF7B84dF02Cad4d75c39602Dc2cb2a275E9", - "txHash": "0x0cd98b8410dddac987d2de8c221713ea8250938550e037a4ef1581251518c178", - "kind": "uups" - }, - { - "address": "0x17dbb473c152Ff977607d82BBE7Bc7B9597cEF22", - "txHash": "0x2777281a792d66e198ebede6d8d7b5fdf89dfcbc8fd60f5e933039e8a6c98ac0", - "kind": "uups" - }, - { - "address": "0x56EEd6e3a358EaaA8Bc9BABb3be9C30b450833e8", - "txHash": "0x68529993097f5e848600a8c94b7edd859cf95f7833f93daa27bf9f83bc38b31c", - "kind": "uups" - }, - { - "address": "0xB4f76eC1cF546BcB2b091d3316F159179Dfbc2d3", - "txHash": "0xaf564eecba8a6623c2f6c9225c9401fc0bab7e226562b7c79f71b01f999df78c", - "kind": "uups" - }, - { - "address": "0x5a03e2a7e3A63E403f4Bd08421c88B4726eCbfB7", - "txHash": "0xd8c70ccf52ac3c957f1c936f76db3c563ca3d362cdd557bcb938e7d3f939e82e", - "kind": "uups" - }, - { - "address": "0x807E241D3118fC8F231948C60aa42a4C606C2545", - "txHash": "0x92c5acb7a80fc7456f09cfa170be120b1f087685d1d199d4350b1cb59dbd08f1", - "kind": "uups" - }, - { - "address": "0xC3CD9A0aE89Fff83b71b58b6512D43F8a41f363D", - "txHash": "0x40fb3000b9aca259b09fd24a83e92d017885f42b7245b8ca804a39e9584282f6", - "kind": "uups" - }, - { - "address": "0xAE2C84c48272F5a1746150ef333D5E5B51F68763", - "txHash": "0x7aa677a741c4b779346c8b179b0f3f47007dd94d90c7073b47a826ba969b86a5", - "kind": "uups" - }, - { - "address": "0xd6b633304Db2DD59ce93753FA55076DA367e5b2c", - "txHash": "0x48e42568ba5cea62bddf9f00d348623677ed38fb083acd760f830f454f290500", - "kind": "uups" - }, - { - "address": "0xcDc4423E9ffa9542d4CdDf42a70859C84859d2A9", - "txHash": "0x964e728e77bd4afa121c93bfd55076c36a5de0b764214dbb9ee574fa1976a9ad", - "kind": "uups" - }, - { - "address": "0xFe35A31e57946E8aadd25158BdF303A36dEf3332", - "txHash": "0x73d4d1df08c7c3d95e8b34545aa55b9ceb7e7e07f7138cb524c7565c56b03e91", - "kind": "uups" - } - ], - "impls": { - "84c23f7724698de84eb813dbfda03172032dfda80fc9218f7edeef2aa8404809": { - "address": "0xC3f92f9F001De4Fe36f9aF7A093842d7fc1a8718", - "txHash": "0x7206af5ce75169aac83dcaf88d81a0744f58834e456cf984a89af704e1a57ea5", - "layout": { - "solcVersion": "0.8.16", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1401_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)1833_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_validatorPKs", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_struct(Validator)1812_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "version", - "offset": 0, - "slot": "256", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "257", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "259", - "type": "t_struct(DAO)1858_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "260", - "type": "t_contract(IERC20)1395", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "261", - "type": "t_struct(Network)1865_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "262", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1395": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1812_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1833_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1401_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1858_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)1865_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1833_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1822_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1840_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1822_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1812_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "660ed01ee43f3f2af646276a03204bac7cb226ab7013ef4ca1a2a5900bd9b6c2": { - "address": "0xE858F79E4220fC552522563aE2C55Be6f5d661f4", - "txHash": "0xbbedf6dd62602c37ad101e4575336fa1bc815365581c3d1dc0e79490c9da3b5b", - "layout": { - "solcVersion": "0.8.16", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "_ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(SSVNetwork)5018", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:26" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:30" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(SSVNetwork)5018": { - "label": "contract SSVNetwork", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "1e164419e5042d71372eda74f4b4650521a5473bbd51b5c1e1cee4b82afe94b7": { - "address": "0xe7A57a7a489d884C30946573A61C173928e03F9B", - "txHash": "0x50f9eca193ce521eecbdd47b73cb5718767b23db6f85d93c363df8f0ed5b5deb", - "layout": { - "solcVersion": "0.8.16", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1401_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)1833_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_validatorPKs", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_struct(Validator)1812_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "version", - "offset": 0, - "slot": "256", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "257", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "259", - "type": "t_struct(DAO)1858_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "260", - "type": "t_contract(IERC20)1395", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "261", - "type": "t_struct(Network)1865_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "262", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1395": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1812_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1833_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1401_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1858_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)1865_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1833_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1822_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1840_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1822_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1812_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "c7f446c2126eeceebac6ff1bbb1cc583a527079acd7f8929332ade86b5852b55": { - "address": "0x2fe8da61509Fd14a1ac00ad589Ffd0Bf1145956D", - "txHash": "0x740ae16c8cf791324207db865b65aceb45ecacb2bcb75306c57fa410de574589", - "layout": { - "solcVersion": "0.8.16", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1401_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)1833_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_validatorPKs", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_struct(Validator)1812_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "version", - "offset": 0, - "slot": "256", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "257", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "257", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "259", - "type": "t_struct(DAO)1858_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "260", - "type": "t_contract(IERC20)1395", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "261", - "type": "t_struct(Network)1865_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "262", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1395": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1812_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1833_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1840_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1401_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1858_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)1865_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1833_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1822_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1840_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1822_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1812_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "c4480254e15501bebfa4ff3227ffafce858a7084193ac664b9626254f8e6b23a": { - "address": "0x6b2CA261957B4b2f795aEeF5A806EdCc6bE04eB9", - "txHash": "0xcd619ab625bebdd3436c5b1158d1aeb76fb5b834c137a336b35c51050d454a93", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)2148_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)2612_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2619_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_struct(Validator)2591_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "version", - "offset": 0, - "slot": "257", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "258", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 8, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "260", - "type": "t_struct(DAO)2637_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "261", - "type": "t_contract(IERC20)2095", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "262", - "type": "t_struct(Network)2644_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "263", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)2095": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)2591_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)2612_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2619_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)2148_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)2637_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2644_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)2612_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)2601_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)2619_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)2601_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)2591_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "106a1e0908460b53147eafb4015f9beae2025df135b0a046f54cfb62b99ab5c4": { - "address": "0x8383d719377047b1B8824CbB7f8ba7f24F12c715", - "txHash": "0x923fe64b46b47b4a91612bb457980cca97017d569c91ed2343ec7ad04cac8693", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "_ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(SSVNetwork)5302", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:25" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(SSVNetwork)5302": { - "label": "contract SSVNetwork", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "2eb98242bc5110431e468ef0b6b4893fc5af474b8bfada3b85b4ffdbf6fbaf5c": { - "address": "0xDea29CF8d8769c0b015360636E07e5f9953F2dDd", - "txHash": "0xb03f69580afbd2d728030fc53fc391f071b75176e05876113a044ab9d74bf99f", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1401_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)1865_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1872_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_struct(Validator)1844_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "version", - "offset": 0, - "slot": "257", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "258", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 8, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "260", - "type": "t_struct(DAO)1890_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "261", - "type": "t_contract(IERC20)1395", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "262", - "type": "t_struct(Network)1897_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "263", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1395": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1844_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1865_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1872_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1401_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1890_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)1897_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1865_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1854_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1872_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1854_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1844_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "983c95fc77dd302eb14262414744b549e13786067160e21a04a61f5def161f3e": { - "address": "0xad77AFA0c42a2056AB310cfd1f13dd5CCE5cF584", - "txHash": "0x0709e6ac3b6fe7ce4b2e1ffaab2d00131d8626436748ad3a49b3551a99ea94b0", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)2148_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "label": "operators", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_uint64,t_struct(Operator)2612_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2619_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "clusters", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_struct(Validator)2591_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "version", - "offset": 0, - "slot": "257", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "258", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "declareOperatorFeePeriod", - "offset": 4, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "executeOperatorFeePeriod", - "offset": 12, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "operatorMaxFeeIncrease", - "offset": 20, - "slot": "258", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 8, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "dao", - "offset": 0, - "slot": "260", - "type": "t_struct(DAO)2637_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_token", - "offset": 0, - "slot": "261", - "type": "t_contract(IERC20)2095", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "network", - "offset": 0, - "slot": "262", - "type": "t_struct(Network)2644_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "__gap", - "offset": 0, - "slot": "263", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)2095": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)2591_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)2612_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2619_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)2148_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)2637_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2644_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)2612_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)2601_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)2619_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)2601_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)2591_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 20, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "ae20f2d8556f8a2bf11dfc6c88ce1515ad5a155729bfba9541b7140d324fb981": { - "address": "0xBB09D3d97f5AF7e96a782158aa0c55d3c5BAaC1F", - "txHash": "0x04fa9049c4a67eb8d6312379a5e8299c7d1a6e56a2a37a336d19b143d08383ba", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "201", - "type": "t_contract(ISSVNetwork)1935", - "contract": "RegisterAuth", - "src": "contracts/RegisterAuth.sol:22" - }, - { - "label": "authorization", - "offset": 0, - "slot": "202", - "type": "t_mapping(t_address,t_struct(Authorization)2215_storage)", - "contract": "RegisterAuth", - "src": "contracts/RegisterAuth.sol:24" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVNetwork)1935": { - "label": "contract ISSVNetwork", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(Authorization)2215_storage)": { - "label": "mapping(address => struct IRegisterAuth.Authorization)", - "numberOfBytes": "32" - }, - "t_struct(Authorization)2215_storage": { - "label": "struct IRegisterAuth.Authorization", - "members": [ - { - "label": "registerOperator", - "type": "t_bool", - "offset": 0, - "slot": "0" - }, - { - "label": "registerValidator", - "type": "t_bool", - "offset": 1, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "3e3e3c0dffab2beea5c1f587b838efbb3ef4872be93e0fe0f285a3e77f4812a6": { - "address": "0x746C33ccC28b1363c35c09baDAF41b2FFa7E6D56", - "txHash": "0x8841dc01dcfa20c49f931101540ffc8111ad46f8e1d78d4df4e0c9f50d58adb2", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1408_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "label": "operatorsPKs", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_uint64)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "operators", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(Operator)1963_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1970_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "clusters", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "257", - "type": "t_mapping(t_bytes32,t_struct(Validator)1942_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "version", - "offset": 0, - "slot": "258", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "259", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 4, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 12, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "operatorFeeConfig", - "offset": 0, - "slot": "260", - "type": "t_struct(OperatorFeeConfig)1977_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "dao", - "offset": 0, - "slot": "261", - "type": "t_struct(DAO)1995_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "token", - "offset": 0, - "slot": "262", - "type": "t_contract(IERC20)1402", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "network", - "offset": 0, - "slot": "263", - "type": "t_struct(Network)2002_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "__gap", - "offset": 0, - "slot": "264", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:71" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1402": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1942_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint64)": { - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1963_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1970_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1408_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1995_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2002_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1963_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1952_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1970_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OperatorFeeConfig)1977_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeConfig", - "members": [ - { - "label": "declareOperatorFeePeriod", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "executeOperatorFeePeriod", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "operatorMaxFeeIncrease", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1952_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1942_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "hashedOperatorIds", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "1ccb2436e943c40bde1109243cc48355f47a96ed143c09aa5164f32ba5a8d6ac": { - "address": "0xE436092ce35Ad4bca28e210F38D48E6adf1A7bdd", - "txHash": "0xa3d0a364576c6f5e2c0e972c201cdfee3b2a76a630db53561cdc91ea6cdae7ba", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "_ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVNetwork)1935", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:21" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:25" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVNetwork)1935": { - "label": "contract ISSVNetwork", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "da4b22c408604c799c21f702c80cbc4b28a5e686332301a5ea685abfdbd59d12": { - "address": "0x2fD5091C7cCCE39c3cA8267BBf7F6e73e8aF3De3", - "txHash": "0xb63f4e40372c683d6fda6945db349afc64daaff7554903e6581ca27211ea0ad0", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)2155_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "label": "operatorsPKs", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_uint64)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "operators", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(Operator)2710_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "clusters", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "257", - "type": "t_mapping(t_bytes32,t_struct(Validator)2689_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "version", - "offset": 0, - "slot": "258", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "259", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 4, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 12, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "operatorFeeConfig", - "offset": 0, - "slot": "260", - "type": "t_struct(OperatorFeeConfig)2724_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "dao", - "offset": 0, - "slot": "261", - "type": "t_struct(DAO)2742_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "token", - "offset": 0, - "slot": "262", - "type": "t_contract(IERC20)2102", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "network", - "offset": 0, - "slot": "263", - "type": "t_struct(Network)2749_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "__gap", - "offset": 0, - "slot": "264", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:71" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)2102": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)2689_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint64)": { - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)2710_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)2155_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)2742_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2749_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)2710_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)2699_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)2717_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OperatorFeeConfig)2724_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeConfig", - "members": [ - { - "label": "declareOperatorFeePeriod", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "executeOperatorFeePeriod", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "operatorMaxFeeIncrease", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)2699_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)2689_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "hashedOperatorIds", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "1ee8c0149a057c048f20b833a01728a0e20412639ef24f718b562ddfb6a55a16": { - "address": "0x74d8aC7C183b38DF8f34C6b2c9048aaDcA4F1B8f", - "txHash": "0x75bb9b28c921f2774b5a503a25702f18ca98d4d3572e8345c6cb8e9fe6b3a942", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)2155_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "label": "operatorsPKs", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_uint64)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "operators", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(Operator)2710_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "clusters", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "257", - "type": "t_mapping(t_bytes32,t_struct(Validator)2689_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "version", - "offset": 0, - "slot": "258", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "259", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 4, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 12, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "operatorFeeConfig", - "offset": 0, - "slot": "260", - "type": "t_struct(OperatorFeeConfig)2724_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "dao", - "offset": 0, - "slot": "261", - "type": "t_struct(DAO)2742_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "token", - "offset": 0, - "slot": "262", - "type": "t_contract(IERC20)2102", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "network", - "offset": 0, - "slot": "263", - "type": "t_struct(Network)2749_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "__gap", - "offset": 0, - "slot": "264", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:71" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)2102": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)2689_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint64)": { - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)2710_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)2155_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)2742_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2749_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)2710_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)2699_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)2717_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OperatorFeeConfig)2724_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeConfig", - "members": [ - { - "label": "declareOperatorFeePeriod", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "executeOperatorFeePeriod", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "operatorMaxFeeIncrease", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)2699_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)2689_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "hashedOperatorIds", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "f7b3d32617efa532ec2ed3b21818c645afaa65acc745236500f0974b4b3d1d5e": { - "address": "0x703FcfeFF4cC45be17eA2Cfe90E7FD1b0d16BF23", - "txHash": "0x7b347767d3df89f0dc287be2650f1add0aaf8e49a8eacbae73628937cf50bdac", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "201", - "type": "t_contract(ISSVNetwork)2682", - "contract": "RegisterAuth", - "src": "contracts/RegisterAuth.sol:22" - }, - { - "label": "authorization", - "offset": 0, - "slot": "202", - "type": "t_mapping(t_address,t_struct(Authorization)2961_storage)", - "contract": "RegisterAuth", - "src": "contracts/RegisterAuth.sol:24" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVNetwork)2682": { - "label": "contract ISSVNetwork", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_struct(Authorization)2961_storage)": { - "label": "mapping(address => struct IRegisterAuth.Authorization)", - "numberOfBytes": "32" - }, - "t_struct(Authorization)2961_storage": { - "label": "struct IRegisterAuth.Authorization", - "members": [ - { - "label": "registerOperator", - "type": "t_bool", - "offset": 0, - "slot": "0" - }, - { - "label": "registerValidator", - "type": "t_bool", - "offset": 1, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "65580310b4febb04a9c3e4042265ca50fcd8f9a33e23a1f904fcb65f9f1369cd": { - "address": "0x0a59b28a3D4d6F715eb42FB80D02c2474cBebCc7", - "txHash": "0x6d2b29a6e7b1cf3bd30c84eabf21e1dc937c650bab042d830dcaadf981693e93", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)2155_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "label": "operatorsPKs", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_uint64)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "operators", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(Operator)2710_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "clusters", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "257", - "type": "t_mapping(t_bytes32,t_struct(Validator)2689_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "version", - "offset": 0, - "slot": "258", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "259", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 4, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 12, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "operatorFeeConfig", - "offset": 0, - "slot": "260", - "type": "t_struct(OperatorFeeConfig)2724_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "dao", - "offset": 0, - "slot": "261", - "type": "t_struct(DAO)2742_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "token", - "offset": 0, - "slot": "262", - "type": "t_contract(IERC20)2102", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "network", - "offset": 0, - "slot": "263", - "type": "t_struct(Network)2749_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "__gap", - "offset": 0, - "slot": "264", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:71" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)2102": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)2689_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint64)": { - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)2710_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)2717_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)2155_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)2742_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2749_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)2710_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)2699_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)2717_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OperatorFeeConfig)2724_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeConfig", - "members": [ - { - "label": "declareOperatorFeePeriod", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "executeOperatorFeePeriod", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "operatorMaxFeeIncrease", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)2699_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)2689_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "hashedOperatorIds", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "e98130a58d8e48a4d04e9bc712106b357518d6734da0f381d35a64479a761798": { - "address": "0xf05E0930eFD59CA23EFCbcA66b82Ed42cA3ADf73", - "txHash": "0x7465bda45bfddaddef837ae6cfe383506e8b9a80f24433f5a7ca2c6588975a5c", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "_ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVNetwork)2682", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:21" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:25" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVNetwork)2682": { - "label": "contract ISSVNetwork", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "1efc026838fe83210dbd8c56ac7e1f6759bc502143b5879da8be1d153a23d7dd": { - "address": "0x9b25f247C6d055C21c9a85a224CF32078523011a", - "txHash": "0xd9711d06798086fbd7da5017e3fff20632c421c8aa62d124649393d749bd314c", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "lastOperatorId", - "offset": 0, - "slot": "251", - "type": "t_struct(Counter)1408_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "label": "operatorsPKs", - "offset": 0, - "slot": "252", - "type": "t_mapping(t_bytes32,t_uint64)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "operators", - "offset": 0, - "slot": "253", - "type": "t_mapping(t_uint64,t_struct(Operator)1963_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "operatorsWhitelist", - "offset": 0, - "slot": "254", - "type": "t_mapping(t_uint64,t_address)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "operatorFeeChangeRequests", - "offset": 0, - "slot": "255", - "type": "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1970_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "clusters", - "offset": 0, - "slot": "256", - "type": "t_mapping(t_bytes32,t_bytes32)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "validatorPKs", - "offset": 0, - "slot": "257", - "type": "t_mapping(t_bytes32,t_struct(Validator)1942_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "version", - "offset": 0, - "slot": "258", - "type": "t_bytes32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "259", - "type": "t_uint32", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "minimumBlocksBeforeLiquidation", - "offset": 4, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "minimumLiquidationCollateral", - "offset": 12, - "slot": "259", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "operatorFeeConfig", - "offset": 0, - "slot": "260", - "type": "t_struct(OperatorFeeConfig)1977_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "dao", - "offset": 0, - "slot": "261", - "type": "t_struct(DAO)1995_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "token", - "offset": 0, - "slot": "262", - "type": "t_contract(IERC20)1402", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "network", - "offset": 0, - "slot": "263", - "type": "t_struct(Network)2002_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "__gap", - "offset": 0, - "slot": "264", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:71" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_contract(IERC20)1402": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_mapping(t_bytes32,t_bytes32)": { - "label": "mapping(bytes32 => bytes32)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Validator)1942_storage)": { - "label": "mapping(bytes32 => struct ISSVNetworkCore.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_uint64)": { - "label": "mapping(bytes32 => uint64)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_address)": { - "label": "mapping(uint64 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(Operator)1963_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint64,t_struct(OperatorFeeChangeRequest)1970_storage)": { - "label": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_struct(Counter)1408_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(DAO)1995_storage": { - "label": "struct ISSVNetworkCore.DAO", - "members": [ - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 4, - "slot": "0" - }, - { - "label": "block", - "type": "t_uint64", - "offset": 12, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Network)2002_storage": { - "label": "struct ISSVNetworkCore.Network", - "members": [ - { - "label": "networkFee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "networkFeeIndexBlockNumber", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)1963_storage": { - "label": "struct ISSVNetworkCore.Operator", - "members": [ - { - "label": "owner", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 20, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 28, - "slot": "0" - }, - { - "label": "snapshot", - "type": "t_struct(Snapshot)1952_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OperatorFeeChangeRequest)1970_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "approvalEndTime", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OperatorFeeConfig)1977_storage": { - "label": "struct ISSVNetworkCore.OperatorFeeConfig", - "members": [ - { - "label": "declareOperatorFeePeriod", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "executeOperatorFeePeriod", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "operatorMaxFeeIncrease", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Snapshot)1952_storage": { - "label": "struct ISSVNetworkCore.Snapshot", - "members": [ - { - "label": "block", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "balance", - "type": "t_uint64", - "offset": 16, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Validator)1942_storage": { - "label": "struct ISSVNetworkCore.Validator", - "members": [ - { - "label": "hashedOperatorIds", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "0f9a95bf887a1d295574106829b58f2b931d31b43347c5d7ebf5c432f0d1cf82": { - "address": "0x0Eb002b608133f761A5496A7AD68fFb9a5ae70d1", - "txHash": "0x0e0e17e15a72f233157c5f4a4964a0b5a9ec755199150b9adbb8a58da1ccd5e4", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "07f0ad8d638b80e3e0c46a0ffab2878d79893dbc88ef70a1e05f76ae796932ca": { - "address": "0xC0DE4424F1C2B9BC9b80F19cC479b0adaD38Af44", - "txHash": "0x02b2a5d2c7d92c2fa5a82d1f5694c9225da8e51b7d16792546fbb344c0c167ef", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(IFnSSVViews)3530", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IFnSSVViews)3530": { - "label": "contract IFnSSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "064c555064aab91647555e9d6781b7254cafff19ce48d4c940fb3dbec372bff0": { - "address": "0xe31b3B1455CCe05030feB1d43a53fB49a5448C30", - "txHash": "0xd91d392a1368afa223ae9947b12551893424425f0d0261baf7f37418a023d81f", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "54c5f42e38cd6e80926108ca0d604abbc840af9bd2d1006bfc27edbf9ab86b0c": { - "address": "0xaaA153ed386F353B793c20868C4F0179B4Ad7604", - "txHash": "0x31682999189ec4b2b2495e6350e97fca5bffeb0a035aab8363abc818b9fa8892", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "06c55e88f7f16ecefd8ce649742571d8712c1164ba0a39a3f273716195d24be1": { - "address": "0xc7fCFeEc5FB9962bDC2234A7a25dCec739e27f9f", - "txHash": "0x59707232c74530e4af16199656dda3dc63b9dfe5a5232fba421daa6cf185a2f3", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)3521", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)3521": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "5d5e858f3c695d1a8c3e7e337239b4cbff1683e92f0839c61c0024f83661cd8b": { - "address": "0xc108c97aD33e10A5A3c87aE686eDb2a7d7c2f45C", - "txHash": "0x27717075d4d11ff649e2cd6523d4afdf9646c007249d4d7a787bdb6efc60807b", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "e6676711f192bb030762553ef7a425b58ee1593a0fc019a3fa85de4b34586bfa": { - "address": "0xE1914816A5AA165A9D828b822Fd4Aa068e1669f8", - "txHash": "0x275ce6a384977642576396837c3c2c3adb78a6a44ad764b06693c7d68c0e6d33", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "d3dca384c0bca6f3341cfc9d6d0fbcdecb40c156c3132b6887361c512f1b8f82": { - "address": "0xA772Ad9BD8b8F5e482dFB4225eDB80a450C0D66A", - "txHash": "0xcc32549ed0dbfaf8da2f084f8b998a9bf994943a39e84a27764205d920c93415", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "4520774aa64c18c9ddf1ef74c95a2ccf9bb21a0078a21ea1067552fdbd846048": { - "address": "0x74C82BD3F46Ab4F2A98635eaEa1f84E1BA5BE98c", - "txHash": "0x8d83beee85106b30f181eaa1abe432a4d75230e10965422d43bb8678f2cbdba9", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4181", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4181": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "3f9800ada4d2a9cecd5dbe695c48130fa7bc0dcdc84b9b238164a16c6a2802fe": { - "address": "0xEcd38CFb1c04C73AEa71350c742dD2A6613861C8", - "txHash": "0x6926c384301d3c540df529e49f0e253be4e178eaba77e9b46d99bc717b990313", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "0b47d2abd2279e76837ff94805e14a88d019593eed05755759cc40256af16f0e": { - "address": "0x296C821446f8756A6d30784C6CF63B65c2B82863", - "txHash": "0xc449b9dd299fe868cc5e284843897df96fb79db91b313450c96ee7e6c3b80a69", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "368acb5d5852996f01c66abefb8ca54bce00f1977c8aaed5efcf0c75f250303d": { - "address": "0xE20E557C5173D505a58eEBf3C4E6aD2672c57Fd1", - "txHash": "0xcde725501175a0ce2045f30df0fc6b3ed3fed0f2baab220f25163ec7c4f93933", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4189", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4189": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "1e550124c6e28f236ee8632b9abc9a68dac2f537aff421981b339520c87ad539": { - "address": "0x0097bBea812414d42D2AD6d76c7da1c794AA16A9", - "txHash": "0xf3a3e1c1742cd1d11b7271abf2768c6046122eb06a2f66971a931021b25763c5", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "d876760172e5575262f8fe267daaa9f5045a6c995da21c74c61e769c00d0cb79": { - "address": "0x5fBf3Fe05112DE129Bf26dB70B03630Bc9A7233a", - "txHash": "0xa7cdfbbb6c6085cf5a574d3c1a93fbbb270987c566a33bcaa9f305d29347b2ea", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "c319dae004e883cdd24ab7834715e77958c6beccd0f2cea7e46e804b8f89f295": { - "address": "0xFA2e88093a4Ad20E204290f6169410CcF96e8858", - "txHash": "0xa476d771b2ad2793f613e84194fbfd393e61d6641371592337cadddbca813245", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "8a3382629da06790720d2d37ed76d51b1f949d6c3b17919f08f3b6842b9de108": { - "address": "0x7450a96d73E070210a52ceC327029F52fd156043", - "txHash": "0x9b95840ebe867c296beabe54ce9e7421ea9eb720ee26234d9e8418479cd7903d", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4293", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4293": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "e311afb1f25419f9f90569ca2bf47a87990372364d587ec21789bb9aa6e83966": { - "address": "0xc25ad8Ebf84E08797b3076bb861C35056D3728e9", - "txHash": "0x7c1551d856363b706c688ef21bb39ab5cf30154806d2198d9a3666af45e40b7c", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "ea22005a44aa654c8170296ef0052ed50bdb1eb52b46b0b5a9aefc6275bf48c0": { - "address": "0x5888116f5863CA1A311F51ab79a03fBd34Ac6487", - "txHash": "0x1754042f1c35ae05c7ea6c1090e2af0bd38dcf99ce86374720222ed1c66b8fba", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - } - } -} diff --git a/.openzeppelin/holesky.json b/.openzeppelin/holesky.json deleted file mode 100644 index fe420fd3..00000000 --- a/.openzeppelin/holesky.json +++ /dev/null @@ -1,1762 +0,0 @@ -{ - "manifestVersion": "3.2", - "proxies": [ - { - "address": "0x0d33801785340072C452b994496B19f196b7eE15", - "txHash": "0x9c6605dab4a2d23e480bf90f476b34498bd6d7a4e3c232835544bd8c94971427", - "kind": "uups" - }, - { - "address": "0x656d5cC4e7d49EaCC063cBB8D3e072F2841D68b4", - "txHash": "0x05fec282860f01d95aa19fea01907f0e377d529685c33da59dd0b7c85f96b0b2", - "kind": "uups" - }, - { - "address": "0x38A4794cCEd47d3baf7370CcC43B560D3a1beEFA", - "txHash": "0x998c38ff37b47e69e23c21a8079168b7e0e0ade7244781587b00be3f08a725c6", - "kind": "uups" - }, - { - "address": "0x352A18AEe90cdcd825d1E37d9939dCA86C00e281", - "txHash": "0xf36e0e114031e961a1e3452477ed71658cf0f809be94832b4dc4a99a293ef664", - "kind": "uups" - }, - { - "address": "0x4fA60408D9c0428b43FCa0E26c2f9aAa510cCeE2", - "txHash": "0x72d9a2c0e2442046a87816203f08b0ad4cb65ef25de40c59c5fe4f83b8834370", - "kind": "uups" - }, - { - "address": "0xEa0Fd295Be44Fb909d654dA90198c8E9d766FB74", - "txHash": "0x8cbbb4f8c3fa01e88d0aed6ffcccab3c063d332bf465541a4515fe3070177687", - "kind": "uups" - }, - { - "address": "0x4404f2EBBFc2Ab622C161fA8531404C68606260a", - "txHash": "0xcebce7af4e88fed3dab9c20188ed72b9165e48f12ff70b1ba9aa14e26441967d", - "kind": "uups" - }, - { - "address": "0xAd76Ff4a0931ce5F856044507A0400bA4eA59FB3", - "txHash": "0x53e06d337a8a9f8f000b5b9c9ec552ebc8751d6b69331297ff85d4c7b41de8d3", - "kind": "uups" - }, - { - "address": "0xC9A1594b2F8d48b1e8e84ffbB1448Ebcde00c154", - "txHash": "0x88bd899c0f8ff164525289cccf2fd60c4125dec28bd22fd6aa4f61a1616370e9", - "kind": "uups" - } - ], - "impls": { - "d876760172e5575262f8fe267daaa9f5045a6c995da21c74c61e769c00d0cb79": { - "address": "0x116522F4D00b42Efce0aA77f7ddAd1d27705F36b", - "txHash": "0xd04d7ebb1f3211c5006d965f1c3762c866e8eb77027428ab8989904b4af28a16", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "368acb5d5852996f01c66abefb8ca54bce00f1977c8aaed5efcf0c75f250303d": { - "address": "0xa9d0096bdbf97401F1B5E8D5330Ee8b7f0cb975D", - "txHash": "0x6fbd987b485c9f50a953b1ad38de6bcca366fbe9f9cb1ae88d81aa9b085fb3c6", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)2185", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)2185": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "6cbab0be5caec362fa591f99e9ab60ab2ec706c3cb7d8437dff9b7e9a204232e": { - "address": "0x58EabC62cC2c254AC43E35Edbb0D1f74f3DAd508", - "txHash": "0xd28b5d89a5f212ac291259398cbc79d035ef497bf8f42099edb229e8800aae6e", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "c319dae004e883cdd24ab7834715e77958c6beccd0f2cea7e46e804b8f89f295": { - "address": "0xE74C70Ea8A688de29d3b1F631b1FF8decAd52833", - "txHash": "0x5500f4fcf7c7487ea6c16c5f11fb7e81abc28a6dc0e33207ab5a15e696287aef", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "8a3382629da06790720d2d37ed76d51b1f949d6c3b17919f08f3b6842b9de108": { - "address": "0x7118C9B049E834B2351C1c9a0ECEE12610A1a29E", - "txHash": "0x1f189d0a9a3a88acfeefcfd6bec1309f969d6249550cac23396bfff6e4e39d17", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4293", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4293": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "141551db18457f12435a89572b53feb0543d6d3f184915332fb095bfb8164fdf": { - "address": "0x21A40764aFEb2DA98eEB95Ce720212A15F87c5d7", - "txHash": "0x5433d717bd39e46df0e0345050bf5a0a7f136f96289b6d20b6f9b40b51dcab90", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "e311afb1f25419f9f90569ca2bf47a87990372364d587ec21789bb9aa6e83966": { - "address": "0x249e2769bF15082e1e44D15D819c0230d4500d54", - "txHash": "0x61e70aa81e1c355fdfd3a0554a42043651d7a032435c3a87d06de6f67854ddf8", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "ea22005a44aa654c8170296ef0052ed50bdb1eb52b46b0b5a9aefc6275bf48c0": { - "address": "0x990B226E8D74B42414F1296CCf2d8BA454879621", - "txHash": "0xfdde435768aa2ea9fe64206e700dfb6eac13345e5d733beca1a723e59a578683", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "cace716c99b7c3331ef14bea41153e9b79ee38508d038ed764ebfa2f3addf8d6": { - "address": "0xEFccE07BeC6418e32e72a28aFf0cdf442AEc14ea", - "txHash": "0x3da46b8992ed89a293c740d4e6a724eb0f24fc7b8fd2257bcd8af434ca1f956c", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "39c6606e3e0309dc1e40c1da00f5f6fea1a7f681100fa39bffeab8a902d3e822": { - "address": "0xc4267540782292Bb143d1ac4791a870174F76B26", - "txHash": "0x6182c8cadd407d87fbef290d92f0e026e1a3203e00a2806fa8dad7df075060b6", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "d7d016016e8901e15ef80cd31dabc235c6db346324f22178ef7f0075e8481236": { - "address": "0x2fd5fd777bB818bf10A7ab803A9c3ae510E06Ea2", - "txHash": "0x2e05685de9deb43f83ba2b427f8eb31c7ef675d0aff896b4f9c86136c6d0b46e", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4946", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4946": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "a3d9e24ff7a910e9c585a007869df7fef9bed3087299d4534d453e5cd2bcfb5a": { - "address": "0x9Fe9ae58ABe43271313E87DCEAECB2780bE6E2c1", - "txHash": "0xcc870a141b68547d2fa9e71df10f273359e4509dd8948c958e6096cf1e5f2392", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "7e9059cf74010ecbc029661757fcbec0cf7eee8077142bd25354cb83a7152fa8": { - "address": "0x8A8543f0323Fdf9c67Cb5d10B869F565FA737177", - "txHash": "0xf1a132ce867fb1ede636f649cef559d29668cbe1c44af46d4abfe491fb37c26f", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "da06f711e239a6b927747cdeefb5954a754f3a4e01a17212488672f6689ac6f1": { - "address": "0x753B24E62c90B468Bd410b552555717552eC56Ff", - "txHash": "0xce31a279871c200cba53c2726dcbfc4493e4b86ffdd31862713323f9cf60a4cb", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4950", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4950": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "350f8e1c7a01c817bb83103cd78dcb1d0b3510b15601eff2bea87d6506ccd751": { - "address": "0x5Dbf9a62BbcC8135AF60912A8B0212a73e4a6629", - "txHash": "0xcdaf8e8d6193ad7d0fb8b358031620a874d5d5f16b9a8044e8fa4bfba01c141c", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - } - } -} diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json deleted file mode 100644 index ca45b292..00000000 --- a/.openzeppelin/mainnet.json +++ /dev/null @@ -1,1298 +0,0 @@ -{ - "manifestVersion": "3.2", - "proxies": [ - { - "address": "0x42Cd8D240E30102B715d7516f97864ECeC4441Ab", - "txHash": "0x2c2e2e6fcd70e75f404d8bc5e09d9a1e4cff2bb9e6c80195b47c6227f06a8a63", - "kind": "uups" - }, - { - "address": "0xb54E555A7f8a0143C829C67F85fCe71523621E45", - "txHash": "0xe3250f79b6fb013dceb5628662e30943a1cbecaa765f52b9de8a12cdea70fcdb", - "kind": "uups" - }, - { - "address": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", - "txHash": "0x4a11a560d3c2f693e96f98abb1feb447646b01b36203ecab0a96a1cf45fd650b", - "kind": "uups" - }, - { - "address": "0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4", - "txHash": "0x98028d64fb4e2428b8a523c085bb4edc2e5e2bd32542802784adb6aa7a12a2e2", - "kind": "uups" - } - ], - "impls": { - "064c555064aab91647555e9d6781b7254cafff19ce48d4c940fb3dbec372bff0": { - "address": "0x99a26a746d950a2E117E1220a765a018beDB0029", - "txHash": "0x320eb3ce44973dd6cfb31bc464d65314c4a97a9e33618db3d77bebbe62f3d909", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "07f0ad8d638b80e3e0c46a0ffab2878d79893dbc88ef70a1e05f76ae796932ca": { - "address": "0x2c14476920E931Eb1DA21EdB4215792A68bEAeA6", - "txHash": "0x880b616c1c13a1065b62c1cc624555f6f34375bb79370fabd4853acb7a85a2d5", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(IFnSSVViews)3548", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:20" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:24" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IFnSSVViews)3548": { - "label": "contract IFnSSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "5d5e858f3c695d1a8c3e7e337239b4cbff1683e92f0839c61c0024f83661cd8b": { - "address": "0xdc1E8E50673B893c16c18D88e81e13B4415F6292", - "txHash": "0xe6536ad3ddd1fd7b66930558431355ea92a730415a9bd09a6037dcc843ce279c", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "06c55e88f7f16ecefd8ce649742571d8712c1164ba0a39a3f273716195d24be1": { - "address": "0xe183d6eEac469B1544f19Cb5a37Fe6eBFc913C4E", - "txHash": "0xc20fc9836f5f9bcfa3dee10efe883183f3afc93b2b2f6a864e6e49236cc1b460", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)3521", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "private__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)3521": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "400b4079d3549b56702f7dfadb688c5395e64dd3211c072e6f584ae7ae02f79f": { - "address": "0xE2d1Cf93CD4D5E0EEEF1b33ca51Bb82c829A1b75", - "txHash": "0x5c1c55b3073cc2579fd426616636484a188f1205a4278dc37063bc891c397494", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "0bbad3c785dcdd02f463ea2ab702971e2ed300422a4e44ee35105568b16edf1b": { - "address": "0x7B6C84186be89bf0f28A3b5fAacFEd0b4d9D1c01", - "txHash": "0x6e4654a9681d21c10744dfb2e5c81e6acfda103ca3a26ff0bc7bc372b565f11d", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "723c9fc111a6d734d5819515928ae5423cf51ac95735557de2cdd68e886f1a04": { - "address": "0x050E94A68440531f3E89e93C33F349270e9D1750", - "txHash": "0x960563ae4a7743c7668e43d8a0c3f409e7b03d2c96c616ed098750ba530af4c8", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "00fc0f9456fc94965feb33fc5cbf61cbcb1758dd875f7adcab6b65862efa4474": { - "address": "0xfe11c3811eD58C518F5Bd23aDb1FAac487a16cBC", - "txHash": "0x9a5321fc1fa20140c23c9a6b07dc8bd0f4e230480f722f800fe930cf16803124", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4228", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4228": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "cace716c99b7c3331ef14bea41153e9b79ee38508d038ed764ebfa2f3addf8d6": { - "address": "0x9c0D5400F82561EbE54110f2aD73Ad76f2917943", - "txHash": "0x2aea34e54f6e3382ace77acc6f4a09f14ed4fe432ff529523f7bad99f531e8aa", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:27" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "350f8e1c7a01c817bb83103cd78dcb1d0b3510b15601eff2bea87d6506ccd751": { - "address": "0xA2f1DaDBb9E836B7Ec47330fF9E5947D2f36FC35", - "txHash": "0xca8c8769030dd820f01373318e271b4f7507cfb1596c8f451ec06bfe7fc6d28b", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - }, - "da06f711e239a6b927747cdeefb5954a754f3a4e01a17212488672f6689ac6f1": { - "address": "0x052E5F6bD9DB71C08Db38377596875ceC5708a94", - "txHash": "0xfe4a43b2032e6b82e39dbb833e2a8ecbf4346370c39fcd786c058c7a86e9317b", - "layout": { - "solcVersion": "0.8.24", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "UUPSUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" - }, - { - "label": "__gap", - "offset": 0, - "slot": "101", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" - }, - { - "label": "_owner", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_pendingOwner", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "202", - "type": "t_array(t_uint256)49_storage", - "contract": "Ownable2StepUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:70" - }, - { - "label": "ssvNetwork", - "offset": 0, - "slot": "251", - "type": "t_contract(ISSVViews)4950", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:19" - }, - { - "label": "__gap", - "offset": 0, - "slot": "252", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetworkViews", - "src": "contracts/SSVNetworkViews.sol:23" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(ISSVViews)4950": { - "label": "contract ISSVViews", - "numberOfBytes": "20" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - }, - "namespaces": {} - } - } - } -} From bbb26a20a07b8a2446dae799b11799e646a8f404 Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Mon, 23 Mar 2026 11:45:24 +0100 Subject: [PATCH 08/12] updated ABIs --- abis/SSVClusters.json | 18 ++++++++++++++---- abis/SSVDAO.json | 18 ++++++++++++++---- abis/SSVOperators.json | 18 ++++++++++++++---- abis/SSVOperatorsWhitelist.json | 15 ++++++++++----- abis/SSVStaking.json | 18 ++++++++++++++---- abis/SSVValidators.json | 16 +++++++++++++--- abis/SSVViews.json | 16 +++++++++++++--- 7 files changed, 92 insertions(+), 27 deletions(-) diff --git a/abis/SSVClusters.json b/abis/SSVClusters.json index 6ef500af..3dcecc90 100644 --- a/abis/SSVClusters.json +++ b/abis/SSVClusters.json @@ -186,6 +186,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -319,22 +324,22 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], - "name": "ReentrancyGuardReentrantCall", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -450,6 +455,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVDAO.json b/abis/SSVDAO.json index 0b742613..6ac668f1 100644 --- a/abis/SSVDAO.json +++ b/abis/SSVDAO.json @@ -197,6 +197,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -330,22 +335,22 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], - "name": "ReentrancyGuardReentrantCall", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -461,6 +466,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVOperators.json b/abis/SSVOperators.json index 2eed3a22..353eb3e0 100644 --- a/abis/SSVOperators.json +++ b/abis/SSVOperators.json @@ -197,6 +197,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -330,22 +335,22 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], - "name": "ReentrancyGuardReentrantCall", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -461,6 +466,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVOperatorsWhitelist.json b/abis/SSVOperatorsWhitelist.json index bdcce4f0..8b79aeb8 100644 --- a/abis/SSVOperatorsWhitelist.json +++ b/abis/SSVOperatorsWhitelist.json @@ -186,6 +186,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -317,11 +322,6 @@ "name": "OracleAlreadyAssigned", "type": "error" }, - { - "inputs": [], - "name": "OracleHasZeroWeight", - "type": "error" - }, { "inputs": [], "name": "PublicKeysSharesLengthMismatch", @@ -445,6 +445,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVStaking.json b/abis/SSVStaking.json index 10596171..4162669e 100644 --- a/abis/SSVStaking.json +++ b/abis/SSVStaking.json @@ -197,6 +197,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -330,22 +335,22 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], - "name": "ReentrancyGuardReentrantCall", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -461,6 +466,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVValidators.json b/abis/SSVValidators.json index 3cba6428..1ad364e4 100644 --- a/abis/SSVValidators.json +++ b/abis/SSVValidators.json @@ -186,6 +186,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -319,17 +324,17 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -445,6 +450,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "anonymous": false, "inputs": [ diff --git a/abis/SSVViews.json b/abis/SSVViews.json index eb5b3cb7..a6bea9d0 100644 --- a/abis/SSVViews.json +++ b/abis/SSVViews.json @@ -197,6 +197,11 @@ "name": "InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "InsufficientCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "InvalidOperatorFeeIncreaseLimit", @@ -330,17 +335,17 @@ }, { "inputs": [], - "name": "OracleHasZeroWeight", + "name": "PublicKeysSharesLengthMismatch", "type": "error" }, { "inputs": [], - "name": "PublicKeysSharesLengthMismatch", + "name": "RootNotFound", "type": "error" }, { "inputs": [], - "name": "RootNotFound", + "name": "SafeCastOverflow", "type": "error" }, { @@ -456,6 +461,11 @@ "name": "ZeroAmount", "type": "error" }, + { + "inputs": [], + "name": "ZeroCSSVSupply", + "type": "error" + }, { "inputs": [], "name": "CSSV_ADDRESS", From 04f8659ac88cc51a4a97ba61557bb7125347d252 Mon Sep 17 00:00:00 2001 From: yuriissv Date: Mon, 23 Mar 2026 12:34:36 +0100 Subject: [PATCH 09/12] chore: cleanup todos --- test/test-forked/v2.0.0/fullIntegrationForked.test.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/test-forked/v2.0.0/fullIntegrationForked.test.ts b/test/test-forked/v2.0.0/fullIntegrationForked.test.ts index 824532b2..106f1cc8 100644 --- a/test/test-forked/v2.0.0/fullIntegrationForked.test.ts +++ b/test/test-forked/v2.0.0/fullIntegrationForked.test.ts @@ -71,7 +71,6 @@ suite("SSVNetwork full integration tests made on forked contract", () => { const { network, views, cssvToken, ssvToken } = await networkHelpers.loadFixture(deployFullSSVNetworkForkFixture); - // todo work on params await expect(await network.getAddress()).to.be.equal(ForkConfig.SSV_NETWORK_ADDRESS); await expect(await views.getAddress()).to.be.equal(ForkConfig.SSV_NETWORK_VIEWS); await expect(await ssvToken.getAddress()).to.be.equal(ForkConfig.SSV_TOKEN); @@ -184,7 +183,6 @@ suite("SSVNetwork full integration tests made on forked contract", () => { const operator: OperatorTuple = await views.getOperatorById(expectedId) - // todo check how to make typed, maybe cast to object like cluster await expect(operator[5]).to.be.equal(false) await expect(await views.getOperatorFee(expectedId)).to.be.equal(0); }); @@ -593,7 +591,6 @@ suite("SSVNetwork full integration tests made on forked contract", () => { .withArgs(operatorIds, true); const operator: OperatorTuple = await views.getOperatorById(operatorIds[0]); - // todo type await expect(operator[4]).to.be.equal(true); //isPrivate }); @@ -635,7 +632,6 @@ suite("SSVNetwork full integration tests made on forked contract", () => { .withArgs(operatorIds, false); const operator: OperatorTuple = await views.getOperatorById(operatorIds[0]); - // todo type await expect(operator[4]).to.be.equal(false); //isPrivate }); @@ -686,7 +682,6 @@ suite("SSVNetwork full integration tests made on forked contract", () => { .to.emit(network, Events.OPERATOR_FEE_DECLARED) .withArgs(operatorOwner.address, operatorIds[0], tx.blockNumber, newFee); - // todo type await expect(await views.getOperatorDeclaredFee(operatorIds[0])) .to.be.deep.equal([ true, // isActive From 97cf6b974d177b77c70920a6054630bddb08bb23 Mon Sep 17 00:00:00 2001 From: yuriissv Date: Mon, 23 Mar 2026 12:34:56 +0100 Subject: [PATCH 10/12] feat: update foundry optimizer runs --- foundry.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foundry.toml b/foundry.toml index 60f9dd4d..ac05baf9 100644 --- a/foundry.toml +++ b/foundry.toml @@ -6,7 +6,7 @@ libs = ["node_modules", "lib"] auto_detect_solc = true via_ir = true optimizer = true -optimizer_runs = 200 +optimizer_runs = 10000 evm_version = "cancun" remappings = [ From b026733436d5114e1ee3c7334bf6bd5920ea6c87 Mon Sep 17 00:00:00 2001 From: yuriissv Date: Mon, 23 Mar 2026 12:57:53 +0100 Subject: [PATCH 11/12] feat: remove lib/forge-std --- lib/forge-std | 1 - 1 file changed, 1 deletion(-) delete mode 160000 lib/forge-std diff --git a/lib/forge-std b/lib/forge-std deleted file mode 160000 index 1801b054..00000000 --- a/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1801b0541f4fda118a10798fd3486bb7051c5dd6 From a00a95569f1e12ccdf9b67c7c53191de01bbe85b Mon Sep 17 00:00:00 2001 From: Venimir Petkov Date: Mon, 23 Mar 2026 16:16:13 +0100 Subject: [PATCH 12/12] Add SAFE fork upgrade simulation and fix fork tests --- Justfile | 5 + deployments/mainnet/safe-tx.nonce-606.json | 12 + docs/SAFE_UPGRADE_SIMULATION_PLAYBOOK.md | 368 +++++++++ docs/UPGRADE_PLAYBOOK.md | 3 + scripts/common/fork-test.ts | 2 + scripts/simulate-safe-upgrade.ts | 707 ++++++++++++++++++ test/common/constants.ts | 1 + .../v2.0.0/fullIntegrationForked.test.ts | 6 +- .../v2.0.0/fullIntegrationForked.test.ts | 8 +- 9 files changed, 1106 insertions(+), 6 deletions(-) create mode 100644 deployments/mainnet/safe-tx.nonce-606.json create mode 100644 docs/SAFE_UPGRADE_SIMULATION_PLAYBOOK.md create mode 100644 scripts/simulate-safe-upgrade.ts diff --git a/Justfile b/Justfile index a7c3e48a..c99d4f6b 100644 --- a/Justfile +++ b/Justfile @@ -78,6 +78,11 @@ upgrade env network="": generate-safe-batch env="mainnet": npx tsx scripts/generate-safe-batch.ts --env {{env}} +# Simulate a queued SAFE transaction on a local fork, verify the post-state, then run fork tests +simulate-safe-upgrade env tx_file network="local": + npx hardhat compile --force + npx tsx scripts/simulate-safe-upgrade.ts --env {{env}} --tx-file {{tx_file}} --network {{network}} + # Generate deployment attestation (bytecode hashes + config summary for committee review) generate-attestation env="mainnet" network="": npx tsx scripts/generate-deployment-attestation.ts --env {{env}} {{ if network == "" { "" } else { "--network " + network } }} diff --git a/deployments/mainnet/safe-tx.nonce-606.json b/deployments/mainnet/safe-tx.nonce-606.json new file mode 100644 index 00000000..27fbebcf --- /dev/null +++ b/deployments/mainnet/safe-tx.nonce-606.json @@ -0,0 +1,12 @@ +{ + "to": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + "data": "0x8d80ff0a00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000df800dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001444f1ef28600000000000000000000000093029dc6f03c951f353e51a8f16f722caa210e5f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4d0937f030000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000338554a41b6a2ec9325157c01666ad8b0ace606000dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f26bfc86210e9b53f95f4dfdbded4b2a42e792ed00dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b000000000000000000000000000000000000000000000000000000000000000020000000000000000000000008ab722746a83eae7158e55d43dc4ade5bb9e021200dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000055051fa508eeda80c38de34ca936aba59642c4500dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000d302e99fee1bab03824ce9ae20c6c578908ccfa500dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b000000000000000000000000000000000000000000000000000000000000000050000000000000000000000001b844e7abb9779f551ddccb5f0f34a54ec1c703400dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e3e324b00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000b1e718d775811af33382ef9850a8c2ca1097c8fb00afe830b6ee262ba11cce5f32fdcd760ffe6a66e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243659cfe600000000000000000000000098febf8824028a212875d797aba88362a9b11cc900dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241f1f9fd500000000000000000000000000000000000000000000000000000000d40cab0000dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000246512447d00000000000000000000000000000000000000000000000000000000000053e800dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e567ed58000000000000000000000000000000000000000000000000000000000000c3c800dd9bc35ae942ef0cfa76930954a156b3ff30a4e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002411dff249000000000000000000000000000000000000000000000000000000000000000000dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024b4c9c40800000000000000000000000000000000000000000000000000024a7d4e64880000dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249f5c130700000000000000000000000000000000000000000000000009594aecc23b400000dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000246f4b158d000000000000000000000000000000000000000000000000000000013e14872000dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e9d232cd000000000000000000000000000000000000000000000000000000000098968000dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249ba0e7000000000000000000000000000000000000000000000000000000000000001d4c00dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000445d756b1d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c61f7bd9ee5a3d011caf47aa0e5411f72059392000dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000445d756b1d0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c07332e05cec1c4896555a6d10361233fdf1442200dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000445d756b1d000000000000000000000000000000000000000000000000000000000000000300000000000000000000000028bea5b242362974d5ddb8f17a1e0e525446960b00dd9bc35ae942ef0cfa76930954a156b3ff30a4e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000445d756b1d00000000000000000000000000000000000000000000000000000000000000040000000000000000000000003a98ee5f80268ed91f8a5880d93468b76a9f3bb4009d65ff81a3c488d585bbfb0bfe3c7707c7917f5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000dd9bc35ae942ef0cfa76930954a156b3ff30a4e10000000000000000000000000000000000000000000000000de0b6b3a764000000dd9bc35ae942ef0cfa76930954a156b3ff30a4e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a694fc3a0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000", + "value": "0", + "operation": 1, + "baseGas": "0", + "gasPrice": "0", + "gasToken": "0x0000000000000000000000000000000000000000", + "nonce": 606, + "refundReceiver": "0x0000000000000000000000000000000000000000", + "safeTxGas": "0" +} diff --git a/docs/SAFE_UPGRADE_SIMULATION_PLAYBOOK.md b/docs/SAFE_UPGRADE_SIMULATION_PLAYBOOK.md new file mode 100644 index 00000000..5b09b88a --- /dev/null +++ b/docs/SAFE_UPGRADE_SIMULATION_PLAYBOOK.md @@ -0,0 +1,368 @@ +# Safe Upgrade Fork Simulation Playbook + +## Purpose + +This document describes how to simulate the exact queued SAFE upgrade transaction for the SSV Network mainnet upgrade on a local mainnet fork. + +The goal is to validate the real SAFE execution path, not a simplified owner-direct upgrade flow. The simulation: + +- executes the queued SAFE transaction through `execTransaction` +- impersonates the required SAFE owners on a local fork +- verifies the post-upgrade on-chain state +- writes an `upgrade-result`-compatible output file +- runs the fork integration suite against the upgraded fork state + +This playbook is aligned with: + +- `deployments/mainnet/config.json` +- `deployments/mainnet/deploy-result.json` +- `deployments/mainnet/multisig-batch.json` +- `scripts/simulate-safe-upgrade.ts` +- `scripts/run-forked-tests.ts` + +## Current Mainnet Scope + +For the current `v1.2.0 -> v2.0.0` mainnet upgrade flow in this repository: + +- SAFE address: `0xb35096b074fdb9bBac63E3AdaE0Bbde512B2E6b6` +- queued SAFE nonce: `606` +- SSVNetwork proxy: `0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1` +- SSVNetworkViews proxy: `0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4` +- MultiSend target: `0x40A2aCCbd92BCA938b02010E17A5b8929b49130D` + +The queued SAFE transaction is expected to be a `delegatecall` to `MultiSend`, containing the same `24` inner calls as `deployments/mainnet/multisig-batch.json`. + +## Current Config Snapshot + +The current repository config for this simulation is: + +```json +{ + "currentVersion": "v1.2.0", + "targetVersion": "v2.0.0", + "skipInitializer": false, + "owner": "0xb35096b074fdb9bBac63E3AdaE0Bbde512B2E6b6", + "ssvNetworkProxy": "0xDD9BC35aE942eF0cFa76930954a156B3fF30a4E1", + "ssvNetworkViews": "0xafE830B6Ee262ba11cce5F32fDCd760FFE6a66e4", + "ssvToken": "0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54", + "cooldownDuration": 604800, + "upgradeTimestamp": 1774351800, + "quorumBps": 7500, + "defaultOracleIds": [1, 2, 3, 4], + "protocolParams": { + "networkFeeEth": "3557600000", + "maxOperatorEthFee": "5336500000", + "minOperatorEthFee": "10000000", + "minimumLiquidationCollateralEth": "644852000000000", + "liquidationThresholdPeriod": "21480", + "minBlocksBetweenUpdates": "0", + "minimumLiquidationCollateralSSV": "673652000000000000", + "liquidationThresholdPeriodSSV": "50120" + }, + "initialStakeAmount": "1000000000000000000", + "oracles": { + "1": "0xc61f7bd9ee5a3d011caf47aa0e5411f720593920", + "2": "0xc07332e05cec1c4896555a6d10361233fdf14422", + "3": "0x28bEa5B242362974d5DDb8f17a1E0e525446960B", + "4": "0x3A98EE5f80268Ed91F8A5880d93468b76a9F3bB4" + } +} +``` + +## Current Deployment Snapshot + +The currently committed deployment output for the same upgrade is: + +```json +{ + "deployer": "0x3187a42658417a4d60866163A4534Ce00D40C0C8", + "chainId": "1", + "network": "mainnet", + "deployedAt": "2026-03-23T09:03:25.491Z", + "blockNumber": 24719200, + "implementations": { + "SSVNetworkSSVStakingUpgrade": "0x93029DC6F03c951f353E51a8f16f722CAa210e5f", + "SSVNetworkViews": "0x98FEBF8824028A212875d797aBa88362A9B11cc9" + }, + "cssvToken": { + "address": "0xe018D31F120A637828F46aFD6c64EC099d960546", + "deployed": true + }, + "modules": { + "SSVOperators": "0x338554A41b6a2Ec9325157C01666AD8b0ACe6060", + "SSVClusters": "0xf26bFC86210e9b53f95F4DFDBdEd4B2A42e792ED", + "SSVDAO": "0x8AB722746a83eAE7158e55d43dc4aDe5bb9E0212", + "SSVViews": "0x055051fa508EEdA80c38De34CA936aBa59642C45", + "SSVOperatorsWhitelist": "0xd302E99feE1BAB03824Ce9aE20c6c578908CcFa5", + "SSVStaking": "0x1B844e7abB9779f551dDcCb5f0f34A54eC1c7034", + "SSVValidators": "0xB1E718d775811af33382eF9850a8C2CA1097c8fB" + } +} +``` + +## Source of Truth + +Use the following inputs together: + +- `deployments/mainnet/config.json` +- `deployments/mainnet/deploy-result.json` +- `deployments/mainnet/multisig-batch.json` +- the queued SAFE transaction JSON exported from the SAFE UI or transaction service + +The queued SAFE transaction JSON must contain these fields: + +- `to` +- `data` +- `value` +- `operation` +- `baseGas` +- `gasPrice` +- `gasToken` +- `nonce` +- `refundReceiver` +- `safeTxGas` + +The simulation script treats the queued SAFE transaction JSON as the execution source of truth and uses `multisig-batch.json` as a consistency check on the decoded inner calls. + +## Preconditions + +Complete all of the following before running the simulation: + +1. Install project dependencies. +2. Ensure the repository is on the release candidate code intended for the upgrade. +3. Confirm `deployments/mainnet/config.json`, `deploy-result.json`, and `multisig-batch.json` are up to date. +4. Save the queued SAFE transaction JSON to a local file. +5. Start a writable local mainnet fork on `127.0.0.1:8545`. +6. Make sure the fork is at a pre-execution state where: + - the SAFE still has nonce `606` + - `SSVNetwork.getVersion()` still reports `v1.2.0` + - the queued SAFE transaction has not already been executed on that fork state + +## Step 1: Start the Local Mainnet Fork + +Run Anvil against mainnet: + +```bash +anvil --fork-url "$MAINNET_RPC_URL" --port 8545 +``` + +If you need deterministic replay, pin a specific block: + +```bash +anvil --fork-url "$MAINNET_RPC_URL" --fork-block-number --port 8545 +``` + +The simulation script expects a writable fork at: + +```text +http://127.0.0.1:8545 +``` + +## Step 2: Save the Queued SAFE Transaction JSON + +Store the queued SAFE transaction object locally, for example: + +```text +deployments/mainnet/safe-tx.nonce-606.json +``` + +The JSON should represent the actual queued transaction, not a reconstructed approximation. + +## Step 3: Run the SAFE Simulation + +Recommended command: + +```bash +just simulate-safe-upgrade mainnet deployments/mainnet/safe-tx.nonce-606.json +``` + +Equivalent direct command: + +```bash +npx tsx scripts/simulate-safe-upgrade.ts \ + --env mainnet \ + --tx-file deployments/mainnet/safe-tx.nonce-606.json \ + --network local \ + --output deployments/mainnet/safe-simulation-result.nonce-606.json +``` + +Optional flags: + +- `--skip-fork-tests true` + Use this if you only want SAFE execution plus post-upgrade verification without running the behavioral fork suite. +- `--test ` + Use this to run a narrower fork test file instead of the default full integration fork suite. + +## What the Script Does + +The simulation flow performs the following steps: + +1. Loads `config.json`, `deploy-result.json`, `multisig-batch.json`, and the queued SAFE transaction JSON. +2. Decodes the SAFE transaction `data` as `multiSend(bytes)`. +3. Verifies that the decoded inner calls match the repository batch by count, order, target, value, and calldata. +4. Reads `getOwners()`, `getThreshold()`, and `nonce()` from the SAFE on the local fork. +5. Verifies the fork is still in the expected pre-upgrade state. +6. Selects the first `threshold` SAFE owners returned by `getOwners()`. +7. Impersonates those owners on the fork and calls `approveHash(safeTxHash)` for each of them. +8. Builds SAFE pre-validated signature bytes. +9. Executes the exact queued transaction via `execTransaction`. +10. Confirms the SAFE emits `ExecutionSuccess` and increments nonce from `606` to `607`. +11. Verifies: + - `SSVNetwork` version + - `SSVNetworkViews` readability + - ERC-1967 implementation addresses + - module pointers + - cSSV token address + - protocol parameters + - oracle set, quorum, cooldown + - initial stake / cSSV supply effects +12. Writes an `upgrade-result`-compatible JSON output file. +13. Runs fork integration tests against the upgraded local fork state. + +## Output Files + +The script writes: + +```text +deployments/mainnet/safe-simulation-result.nonce-606.json +``` + +This file is intentionally shaped like `upgrade-result.json`, with an additional `simulation` block containing: + +- `safeAddress` +- `safeTxHash` +- `safeNonce` +- `postExecutionSafeNonce` +- `selectedApprovers` +- `executionBlock` +- `receiptHash` + +This output can be consumed directly by the existing fork test runner. + +## Success Criteria + +The simulation is considered successful only if all of the following hold: + +- the SAFE transaction decodes correctly as `multiSend(bytes)` +- the decoded inner calls match `deployments/mainnet/multisig-batch.json` +- `execTransaction.staticCall(...)` returns `true` +- the real `execTransaction(...)` succeeds +- the SAFE nonce moves from `606` to `607` +- `SSVNetwork.getVersion()` reports `v2.0.0` +- proxy implementation addresses match `deploy-result.json` +- module pointers match `deploy-result.json` +- shared post-upgrade verification passes without mismatches +- the fork integration suite passes + +## Troubleshooting + +### Safe nonce mismatch + +Symptom: + +```text +Safe nonce mismatch: expected 606, got +``` + +Cause: + +- the fork is too new +- the transaction was already executed on the fork source state +- the wrong SAFE transaction JSON was provided + +Action: + +- restart the fork from a pre-execution block +- verify the queued transaction really belongs to nonce `606` + +### MultiSend batch mismatch + +Symptom: + +```text +inner call calldata mismatch +``` + +Cause: + +- the queued SAFE transaction differs from the repository batch +- `deploy-result.json` or `multisig-batch.json` is stale +- the wrong transaction JSON was exported + +Action: + +- regenerate and review `multisig-batch.json` +- compare the queued SAFE transaction against the current deployment artifacts + +### `execTransaction.staticCall` fails or returns `false` + +Cause: + +- insufficient owner approvals +- wrong nonce +- wrong SAFE transaction fields +- fork state does not match the intended pre-execution state + +Action: + +- verify owners and threshold on-chain +- verify the transaction fields are identical to the queued SAFE tx +- re-check the fork block and source RPC + +### Post-upgrade verification mismatch + +Cause: + +- config drift +- wrong deployment artifacts +- wrong queued SAFE transaction +- unexpected fork state + +Action: + +- re-check `config.json`, `deploy-result.json`, and the queued tx JSON as one set + +### Fork tests fail after a successful SAFE execution + +Cause: + +- the upgrade path is correct, but the upgraded behavior regresses +- the fork test suite is using a stale config file + +Action: + +- inspect the generated `safe-simulation-result.nonce-606.json` +- rerun: + +```bash +npx tsx scripts/run-forked-tests.ts \ + --config deployments/mainnet/safe-simulation-result.nonce-606.json \ + --fork-network hardhat_forked \ + --use-deployed-state true \ + --strict-deployed-state true \ + --allow-deployed-fallback false \ + --no-gas-enforce true +``` + +with: + +```bash +MAINNET_RPC_URL=http://127.0.0.1:8545 +``` + +## Recommended Operator Workflow + +For the current mainnet release, the recommended dry-run sequence is: + +1. `just deploy mainnet` +2. `just generate-safe-batch mainnet` +3. export or copy the queued SAFE transaction JSON +4. start a local mainnet fork +5. `just simulate-safe-upgrade mainnet ` +6. review the generated simulation result file +7. deliver the SAFE batch and attestation to the multisig committee only after the fork simulation passes + +## Related Documents + +- [UPGRADE_PLAYBOOK.md](./UPGRADE_PLAYBOOK.md) +- [../deployments/README.md](../deployments/README.md) diff --git a/docs/UPGRADE_PLAYBOOK.md b/docs/UPGRADE_PLAYBOOK.md index 4cfff5ed..130921c7 100644 --- a/docs/UPGRADE_PLAYBOOK.md +++ b/docs/UPGRADE_PLAYBOOK.md @@ -15,8 +15,11 @@ This playbook is aligned with the repository deployment flow in `deployments/REA - `just deploy mainnet` - `just generate-safe-batch mainnet` +- `just simulate-safe-upgrade mainnet ` - `just verify-upgrade mainnet` +For the exact local SAFE fork dry-run flow, see [SAFE_UPGRADE_SIMULATION_PLAYBOOK.md](./SAFE_UPGRADE_SIMULATION_PLAYBOOK.md). + ## Version Scope - Current on-chain version: `v1.2.0` diff --git a/scripts/common/fork-test.ts b/scripts/common/fork-test.ts index 3a02d7e3..e35fa1c9 100644 --- a/scripts/common/fork-test.ts +++ b/scripts/common/fork-test.ts @@ -5,6 +5,7 @@ export type ForkConfigFile = { ssvNetworkProxy?: string; ssvNetworkAddress?: string; ssvNetworkViews?: string; + initialStakeAmount?: string | number; forkBlockNumber?: string | number; deployments?: { forkBlockNumber?: string | number; @@ -140,5 +141,6 @@ export function buildForkTestEnv( FORK_DEFAULT_UNSTAKE_COOLDOWN: toEnvValue( pp.unstakeCooldownDuration ?? config.unstakeCooldownDuration ?? config.cooldownDuration ), + FORK_INITIAL_STAKE_AMOUNT: toEnvValue(config.initialStakeAmount ?? 0), }; } diff --git a/scripts/simulate-safe-upgrade.ts b/scripts/simulate-safe-upgrade.ts new file mode 100644 index 00000000..266eeb1c --- /dev/null +++ b/scripts/simulate-safe-upgrade.ts @@ -0,0 +1,707 @@ +import { spawn } from "node:child_process"; +import { readFile, writeFile } from "node:fs/promises"; +import { join, resolve } from "node:path"; +import { pathToFileURL } from "node:url"; +import { + AbiCoder, + Contract, + Interface, + getAddress, + isAddress, + keccak256, + toUtf8Bytes, + zeroPadValue, +} from "ethers"; +import { getDeployer, getEthers, parseArg } from "./common/helpers.ts"; +import { + type ModuleAddresses, + type UpgradeConfig, + MODULE_ORDER, + bigintToJsonNumberOrString, + normalizeOracles, + parseOptionalArg, + parseOptionalBooleanArg, + parseQuorum, + parseUint, + requireAddress, + resolveConfigPath, + resolveCooldownDuration, + resolveDefaultOracleIds, + resolveEnvDir, + resolveProtocolParams, + LOCAL_FORK_RPC_URL, +} from "./common/config.ts"; +import { getSignerForAddress, resolveRpcUrl, canImpersonateOnNetwork } from "./common/impersonation.ts"; +import { SSVModules } from "./common/modules.ts"; +import { readOnChainValues, verifyPostUpgradeState } from "./common/verify.ts"; + +type SafeTransactionJson = { + to: string; + data: string; + value: string | number; + operation: string | number; + baseGas: string | number; + gasPrice: string | number; + gasToken: string; + nonce: string | number; + refundReceiver: string; + safeTxGas: string | number; +}; + +type NormalizedSafeTransaction = { + to: string; + data: string; + value: bigint; + operation: number; + baseGas: bigint; + gasPrice: bigint; + gasToken: string; + nonce: bigint; + refundReceiver: string; + safeTxGas: bigint; +}; + +type SafeBatchJson = { + transactions: Array<{ + to: string; + value: string; + data: string; + }>; +}; + +type ParsedDeployResult = { + networkImplementation: string; + viewsImplementation: string; + cssvToken: string; + modules: ModuleAddresses; + chainId?: string; +}; + +type MultiSendCall = { + operation: number; + to: string; + value: bigint; + data: string; +}; + +type SimulationResult = UpgradeConfig & { + simulation: { + safeAddress: string; + safeTxHash: string; + safeNonce: number | string; + postExecutionSafeNonce: number | string; + selectedApprovers: string[]; + executionBlock: number; + receiptHash: string; + }; +}; + +const SAFE_IFACE = new Interface([ + "function getOwners() view returns (address[])", + "function getThreshold() view returns (uint256)", + "function nonce() view returns (uint256)", + "function approveHash(bytes32 hashToApprove)", + "function getTransactionHash(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address refundReceiver,uint256 _nonce) view returns (bytes32)", + "function execTransaction(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address refundReceiver,bytes signatures) payable returns (bool success)", + "event ExecutionSuccess(bytes32 txHash,uint256 payment)", + "event ExecutionFailure(bytes32 txHash,uint256 payment)", +]); + +const MULTISEND_IFACE = new Interface([ + "function multiSend(bytes transactions)", +]); + +const ERC20_IFACE = new Interface([ + "function totalSupply() view returns (uint256)", + "function balanceOf(address account) view returns (uint256)", +]); + +const SSV_VIEWS_MODULE_IFACE = new Interface([ + "function CSSV_ADDRESS() view returns (address)", +]); + +const NETWORK_VIEWS_PROXY_IFACE = new Interface([ + "function ssvNetwork() view returns (address)", +]); + +const PROXY_IMPLEMENTATION_SLOT = + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; +const SSV_STORAGE_POSITION = BigInt(keccak256(toUtf8Bytes("ssv.network.storage.main"))) - 1n; +const SSV_CONTRACTS_MAPPING_SLOT = SSV_STORAGE_POSITION + 3n; + +function assert(condition: unknown, message: string): asserts condition { + if (!condition) { + throw new Error(message); + } +} + +async function readJsonFile(filePath: string): Promise { + const raw = await readFile(filePath, "utf8"); + return JSON.parse(raw) as T; +} + +function normalizeSafeTransaction(input: SafeTransactionJson): NormalizedSafeTransaction { + const to = requireAddress(input.to, "safe tx to"); + const gasToken = requireAddress(input.gasToken, "safe tx gasToken"); + const refundReceiver = requireAddress(input.refundReceiver, "safe tx refundReceiver"); + const value = parseUint(input.value, "safe tx value"); + const baseGas = parseUint(input.baseGas, "safe tx baseGas"); + const gasPrice = parseUint(input.gasPrice, "safe tx gasPrice"); + const nonce = parseUint(input.nonce, "safe tx nonce"); + const safeTxGas = parseUint(input.safeTxGas, "safe tx safeTxGas"); + + assert(value !== undefined, "safe tx value is required"); + assert(baseGas !== undefined, "safe tx baseGas is required"); + assert(gasPrice !== undefined, "safe tx gasPrice is required"); + assert(nonce !== undefined, "safe tx nonce is required"); + assert(safeTxGas !== undefined, "safe tx safeTxGas is required"); + assert(typeof input.data === "string" && input.data.startsWith("0x"), "safe tx data must be a hex string"); + + const operation = Number.parseInt(String(input.operation), 10); + assert(Number.isInteger(operation) && operation >= 0 && operation <= 255, `Invalid safe tx operation: ${input.operation}`); + assert(operation === 1, `Expected Safe tx operation=1 (delegatecall), got ${operation}`); + + return { + to, + data: input.data, + value, + operation, + baseGas, + gasPrice, + gasToken, + nonce, + refundReceiver, + safeTxGas, + }; +} + +function resolveDeployResult(raw: any): ParsedDeployResult { + const networkImplementation = + raw?.implementations?.SSVNetworkSSVStakingUpgrade ?? + raw?.ssvNetworkStakingUpgradeImplementation ?? + raw?.deployments?.ssvNetworkStakingUpgradeImplementation; + const viewsImplementation = + raw?.implementations?.SSVNetworkViews ?? + raw?.ssvNetworkViewsImplementation ?? + raw?.deployments?.ssvNetworkViewsImplementation; + const cssvToken = + raw?.cssvToken?.address ?? + raw?.cssvToken ?? + raw?.deployments?.cssvToken; + const modulesSource = + raw?.modules ?? + raw?.deployments?.modules; + + assert(isAddress(networkImplementation), "deploy-result is missing SSVNetworkSSVStakingUpgrade implementation"); + assert(isAddress(viewsImplementation), "deploy-result is missing SSVNetworkViews implementation"); + assert(isAddress(cssvToken), "deploy-result is missing cssvToken"); + assert(modulesSource && typeof modulesSource === "object", "deploy-result is missing modules"); + + const moduleRecord = modulesSource as Record; + const modules = {} as ModuleAddresses; + for (const moduleName of MODULE_ORDER) { + const moduleAddress = moduleRecord[moduleName]; + assert(isAddress(moduleAddress), `deploy-result is missing module address for ${moduleName}`); + modules[moduleName] = getAddress(moduleAddress); + } + + return { + networkImplementation: getAddress(networkImplementation), + viewsImplementation: getAddress(viewsImplementation), + cssvToken: getAddress(cssvToken), + modules, + chainId: raw?.chainId?.toString?.() ?? raw?.deployments?.chainId?.toString?.(), + }; +} + +function parseMultiSendCalls(data: string): MultiSendCall[] { + const parsed = MULTISEND_IFACE.parseTransaction({ data }); + assert(parsed?.name === "multiSend", "safe tx data is not a multiSend(bytes) call"); + + const encodedTransactions = String(parsed.args[0]); + const bytes = encodedTransactions.slice(2); + const calls: MultiSendCall[] = []; + let offset = 0; + + while (offset < bytes.length) { + assert(offset + 2 + 40 + 64 + 64 <= bytes.length, "multiSend payload is truncated"); + const operation = Number.parseInt(bytes.slice(offset, offset + 2), 16); + offset += 2; + + const to = getAddress(`0x${bytes.slice(offset, offset + 40)}`); + offset += 40; + + const value = BigInt(`0x${bytes.slice(offset, offset + 64)}`); + offset += 64; + + const dataLength = Number(BigInt(`0x${bytes.slice(offset, offset + 64)}`)); + offset += 64; + + assert(offset + dataLength * 2 <= bytes.length, "multiSend inner calldata exceeds encoded payload length"); + const innerData = `0x${bytes.slice(offset, offset + dataLength * 2)}`; + offset += dataLength * 2; + + calls.push({ operation, to, value, data: innerData }); + } + + return calls; +} + +function assertBatchMatches(innerCalls: MultiSendCall[], batch: SafeBatchJson): void { + assert( + innerCalls.length === batch.transactions.length, + `multiSend inner call count mismatch: safe tx has ${innerCalls.length}, batch has ${batch.transactions.length}` + ); + + for (const [index, innerCall] of innerCalls.entries()) { + const batchTx = batch.transactions[index]; + const expectedTo = requireAddress(batchTx.to, `batch transaction ${index + 1} to`); + const expectedValue = BigInt(batchTx.value); + const expectedData = batchTx.data.toLowerCase(); + + assert(innerCall.operation === 0, `inner call ${index + 1} must be CALL (0), got ${innerCall.operation}`); + assert( + innerCall.to.toLowerCase() === expectedTo.toLowerCase(), + `inner call ${index + 1} target mismatch: expected ${expectedTo}, got ${innerCall.to}` + ); + assert( + innerCall.value === expectedValue, + `inner call ${index + 1} value mismatch: expected ${expectedValue}, got ${innerCall.value}` + ); + assert( + innerCall.data.toLowerCase() === expectedData, + `inner call ${index + 1} calldata mismatch` + ); + } +} + +function sortAddresses(addresses: string[]): string[] { + return [...addresses].sort((left, right) => { + const a = left.toLowerCase().slice(2); + const b = right.toLowerCase().slice(2); + return a.localeCompare(b); + }); +} + +function buildPrevalidatedSignatures(owners: string[]): string { + const sortedOwners = sortAddresses(owners); + const encoded = sortedOwners.map((owner) => { + const validator = zeroPadValue(owner, 32).slice(2); + const ignored = "0".repeat(64); + return `${validator}${ignored}01`; + }); + return `0x${encoded.join("")}`; +} + +async function readStorage(provider: any, address: string, slot: string): Promise { + return provider.send("eth_getStorageAt", [address, slot, "latest"]); +} + +function decodeAddressFromStorage(storageValue: string): string { + assert(storageValue.startsWith("0x") && storageValue.length === 66, `Unexpected storage word: ${storageValue}`); + return getAddress(`0x${storageValue.slice(-40)}`); +} + +async function readImplementationAddress(provider: any, proxyAddress: string): Promise { + const raw = await readStorage(provider, proxyAddress, PROXY_IMPLEMENTATION_SLOT); + return decodeAddressFromStorage(raw); +} + +async function readModuleAddress(provider: any, networkProxy: string, moduleId: number): Promise { + const slot = keccak256( + AbiCoder.defaultAbiCoder().encode(["uint256", "uint256"], [BigInt(moduleId), SSV_CONTRACTS_MAPPING_SLOT]) + ); + const raw = await readStorage(provider, networkProxy, slot); + return decodeAddressFromStorage(raw); +} + +async function runForkedTests(configPath: string, testPath: string | undefined): Promise { + const args = [ + "tsx", + "scripts/run-forked-tests.ts", + "--config", + configPath, + "--fork-network", + "hardhat_forked", + "--use-deployed-state", + "true", + "--strict-deployed-state", + "true", + "--allow-deployed-fallback", + "false", + "--no-gas-enforce", + "true", + ]; + + if (testPath) { + args.push("--test", testPath); + } + + console.log(`[TEST] Running forked tests with MAINNET_RPC_URL=${LOCAL_FORK_RPC_URL}`); + + await new Promise((resolvePromise, rejectPromise) => { + const child = spawn("npx", args, { + stdio: "inherit", + env: { + ...process.env, + MAINNET_RPC_URL: LOCAL_FORK_RPC_URL, + }, + }); + + child.on("error", rejectPromise); + child.on("close", (code) => { + if (code === 0) { + resolvePromise(); + return; + } + rejectPromise(new Error(`Forked tests failed with exit code ${code}`)); + }); + }); +} + +export async function main() { + const envFlag = parseOptionalArg("env") ?? "mainnet"; + const txFilePath = resolve(parseArg("tx-file")); + const targetNetwork = parseOptionalArg("network") ?? "local"; + const skipForkTests = parseOptionalBooleanArg("skip-fork-tests", false); + const testPath = parseOptionalArg("test"); + + const configPath = resolveConfigPath(envFlag); + const deployResultPath = join(resolveEnvDir(envFlag), "deploy-result.json"); + const batchPath = join(resolveEnvDir(envFlag), "multisig-batch.json"); + + const config = await readJsonFile(configPath); + const deployResult = resolveDeployResult(await readJsonFile(deployResultPath)); + const safeTx = normalizeSafeTransaction(await readJsonFile(txFilePath)); + const safeBatch = await readJsonFile(batchPath); + const outputPath = resolve( + parseOptionalArg("output") ?? join(resolveEnvDir(envFlag), `safe-simulation-result.nonce-${safeTx.nonce.toString()}.json`) + ); + + const ssvNetworkProxy = requireAddress(config.ssvNetworkProxy, "ssvNetworkProxy"); + const ssvNetworkViews = requireAddress(config.ssvNetworkViews, "ssvNetworkViews"); + const ssvTokenAddress = requireAddress(config.ssvToken, "ssvToken"); + const safeAddress = requireAddress(config.owner ?? "", "config.owner (Safe address)"); + const targetRpcUrl = resolveRpcUrl(targetNetwork); + + assert( + canImpersonateOnNetwork(targetNetwork, targetRpcUrl), + `Target network ${targetNetwork} must support impersonation; use --network local against a local fork` + ); + + const ethers = await getEthers(targetNetwork); + const providerNetwork = await ethers.provider.getNetwork(); + + for (const [label, address] of [ + ["safe", safeAddress], + ["SSVNetwork proxy", ssvNetworkProxy], + ["SSVNetworkViews proxy", ssvNetworkViews], + ["multiSend target", safeTx.to], + ] as const) { + const code = await ethers.provider.getCode(address); + assert(code !== "0x", `No contract code at ${label} ${address} on ${targetNetwork}`); + } + + const innerCalls = parseMultiSendCalls(safeTx.data); + assertBatchMatches(innerCalls, safeBatch); + console.log(`[PRE-FLIGHT] multiSend inner calls match ${batchPath} (${innerCalls.length} calls)`); + + const network = await ethers.getContractAt("SSVNetwork", ssvNetworkProxy); + const viewsProxy = await ethers.getContractAt("SSVNetworkViews", ssvNetworkViews); + const safe: any = new Contract(safeAddress, SAFE_IFACE, ethers.provider); + + const preUpgradeNetworkVersion = await network.getVersion(); + const onChainNetworkOwner = await network.owner(); + const onChainViewsOwner = await viewsProxy.owner(); + const currentSafeNonce = await safe.nonce(); + const safeOwners = (await safe.getOwners()).map((owner: string) => getAddress(owner)); + const safeThreshold = BigInt(await safe.getThreshold()); + + assert( + preUpgradeNetworkVersion === config.currentVersion, + `Pre-upgrade version mismatch: config.currentVersion=${config.currentVersion}, on-chain=${preUpgradeNetworkVersion}` + ); + assert( + onChainNetworkOwner.toLowerCase() === safeAddress.toLowerCase(), + `SSVNetwork owner mismatch: expected ${safeAddress}, got ${onChainNetworkOwner}` + ); + assert( + onChainViewsOwner.toLowerCase() === safeAddress.toLowerCase(), + `SSVNetworkViews owner mismatch: expected ${safeAddress}, got ${onChainViewsOwner}` + ); + assert( + currentSafeNonce === safeTx.nonce, + `Safe nonce mismatch: expected ${safeTx.nonce}, got ${currentSafeNonce}` + ); + assert(safeThreshold > 0n, "Safe threshold must be greater than 0"); + assert( + safeOwners.length >= Number(safeThreshold), + `Safe has ${safeOwners.length} owners but threshold is ${safeThreshold}` + ); + + console.log(`[PRE-FLIGHT] network version before execution = ${preUpgradeNetworkVersion}`); + console.log(`[PRE-FLIGHT] Safe threshold = ${safeThreshold}, owners = ${safeOwners.length}, nonce = ${currentSafeNonce}`); + + const selectedApprovers = safeOwners.slice(0, Number(safeThreshold)); + console.log(`[SAFE] Selected approvers: ${selectedApprovers.join(", ")}`); + + const safeTxHash = await safe.getTransactionHash( + safeTx.to, + safeTx.value, + safeTx.data, + safeTx.operation, + safeTx.safeTxGas, + safeTx.baseGas, + safeTx.gasPrice, + safeTx.gasToken, + safeTx.refundReceiver, + safeTx.nonce + ); + console.log(`[SAFE] safeTxHash = ${safeTxHash}`); + + for (const ownerAddress of selectedApprovers) { + const { signer, impersonated } = await getSignerForAddress(ethers, ownerAddress, true); + const ownerSafe = safe.connect(signer); + const approvalReceipt = await (await ownerSafe.approveHash(safeTxHash)).wait(); + console.log(`[SAFE] approveHash by ${ownerAddress}${impersonated ? " (impersonated)" : ""} in tx ${approvalReceipt?.hash ?? "unknown"}`); + } + + const signatures = buildPrevalidatedSignatures(selectedApprovers); + const executor = await getDeployer(ethers); + const executorAddress = await executor.getAddress(); + const executorSafe = safe.connect(executor); + + console.log(`[SAFE] Executor = ${executorAddress}`); + const staticOk = await executorSafe.execTransaction.staticCall( + safeTx.to, + safeTx.value, + safeTx.data, + safeTx.operation, + safeTx.safeTxGas, + safeTx.baseGas, + safeTx.gasPrice, + safeTx.gasToken, + safeTx.refundReceiver, + signatures + ); + assert(staticOk === true, "Safe execTransaction.staticCall returned false"); + console.log("[SAFE] execTransaction.staticCall returned true"); + + const executionTx = await executorSafe.execTransaction( + safeTx.to, + safeTx.value, + safeTx.data, + safeTx.operation, + safeTx.safeTxGas, + safeTx.baseGas, + safeTx.gasPrice, + safeTx.gasToken, + safeTx.refundReceiver, + signatures + ); + const executionReceipt = await executionTx.wait(); + assert(executionReceipt, "Missing transaction receipt for Safe execution"); + + let sawExecutionSuccess = false; + let sawExecutionFailure = false; + for (const log of executionReceipt.logs) { + try { + const parsed = SAFE_IFACE.parseLog(log); + if (parsed?.name === "ExecutionSuccess") { + sawExecutionSuccess = true; + assert(parsed.args.txHash === safeTxHash, `ExecutionSuccess txHash mismatch: expected ${safeTxHash}, got ${parsed.args.txHash}`); + } + if (parsed?.name === "ExecutionFailure") { + sawExecutionFailure = true; + } + } catch { + // ignore unrelated logs + } + } + + assert(!sawExecutionFailure, "Safe emitted ExecutionFailure"); + assert(sawExecutionSuccess, "Safe did not emit ExecutionSuccess"); + + const postExecutionSafeNonce = await safe.nonce(); + assert( + postExecutionSafeNonce === safeTx.nonce + 1n, + `Safe nonce did not increment correctly: expected ${safeTx.nonce + 1n}, got ${postExecutionSafeNonce}` + ); + console.log(`[SAFE] Execution succeeded in tx ${executionReceipt.hash}`); + + const postUpgradeVersion = await network.getVersion(); + const postUpgradeViewsVersion = await viewsProxy.getVersion(); + assert( + postUpgradeVersion === config.targetVersion, + `SSVNetwork version mismatch after execution: expected ${config.targetVersion}, got ${postUpgradeVersion}` + ); + assert( + typeof postUpgradeViewsVersion === "string" && postUpgradeViewsVersion.length > 0, + "SSVNetworkViews version is unreadable after execution" + ); + console.log(`[POST] network version = ${postUpgradeVersion}`); + console.log(`[POST] views version = ${postUpgradeViewsVersion}`); + + const actualNetworkImplementation = await readImplementationAddress(ethers.provider, ssvNetworkProxy); + const actualViewsImplementation = await readImplementationAddress(ethers.provider, ssvNetworkViews); + assert( + actualNetworkImplementation.toLowerCase() === deployResult.networkImplementation.toLowerCase(), + `SSVNetwork implementation mismatch: expected ${deployResult.networkImplementation}, got ${actualNetworkImplementation}` + ); + assert( + actualViewsImplementation.toLowerCase() === deployResult.viewsImplementation.toLowerCase(), + `SSVNetworkViews implementation mismatch: expected ${deployResult.viewsImplementation}, got ${actualViewsImplementation}` + ); + + const actualModules = {} as ModuleAddresses; + for (const moduleName of MODULE_ORDER) { + const actualModuleAddress = await readModuleAddress( + ethers.provider, + ssvNetworkProxy, + Number(SSVModules[moduleName as keyof typeof SSVModules]) + ); + const expectedModuleAddress = deployResult.modules[moduleName]; + assert( + actualModuleAddress.toLowerCase() === expectedModuleAddress.toLowerCase(), + `${moduleName} module mismatch: expected ${expectedModuleAddress}, got ${actualModuleAddress}` + ); + actualModules[moduleName] = actualModuleAddress; + } + console.log("[POST] module pointers match deploy-result.json"); + + const viewsModule: any = new Contract(actualModules.SSVViews, SSV_VIEWS_MODULE_IFACE, ethers.provider); + const actualCssvToken = getAddress(await viewsModule.CSSV_ADDRESS()); + assert( + actualCssvToken.toLowerCase() === deployResult.cssvToken.toLowerCase(), + `CSSV token mismatch: expected ${deployResult.cssvToken}, got ${actualCssvToken}` + ); + + const viewsProxyConfig: any = new Contract(ssvNetworkViews, NETWORK_VIEWS_PROXY_IFACE, ethers.provider); + const proxiedNetworkAddress = getAddress(await viewsProxyConfig.ssvNetwork()); + assert( + proxiedNetworkAddress.toLowerCase() === ssvNetworkProxy.toLowerCase(), + `SSVNetworkViews.ssvNetwork mismatch: expected ${ssvNetworkProxy}, got ${proxiedNetworkAddress}` + ); + + const params = resolveProtocolParams(config); + const cooldownDuration = resolveCooldownDuration(config); + const quorumBps = parseQuorum(config.quorumBps); + const oracles = normalizeOracles(config.oracles); + const defaultOracleIds = resolveDefaultOracleIds(config, oracles); + + console.log("[VERIFY] Running shared post-upgrade verifier"); + await verifyPostUpgradeState({ + views: viewsProxy, + params, + cooldownDuration, + defaultOracleIds, + quorumBps, + oracles, + }); + + const onChainValues = await readOnChainValues(viewsProxy); + const actualOracleEntries = await Promise.all( + onChainValues.defaultOracleIds.map(async (oracleId) => ({ + id: oracleId, + address: getAddress(await viewsProxy.getOracle(oracleId)), + })) + ); + + const cssvToken: any = new Contract(actualCssvToken, ERC20_IFACE, ethers.provider); + const totalStaked = BigInt(await viewsProxy.totalStaked()); + const cssvTotalSupply = BigInt(await cssvToken.totalSupply()); + const safeCssvBalance = BigInt(await cssvToken.balanceOf(safeAddress)); + const initialStakeAmount = parseUint(config.initialStakeAmount, "initialStakeAmount"); + + assert( + totalStaked === cssvTotalSupply, + `totalStaked/CSSV totalSupply mismatch: totalStaked=${totalStaked} cssvTotalSupply=${cssvTotalSupply}` + ); + if (initialStakeAmount !== undefined && initialStakeAmount > 0n) { + assert( + totalStaked === initialStakeAmount, + `totalStaked mismatch after initial stake: expected ${initialStakeAmount}, got ${totalStaked}` + ); + assert( + safeCssvBalance === initialStakeAmount, + `Safe cSSV balance mismatch after initial stake: expected ${initialStakeAmount}, got ${safeCssvBalance}` + ); + } + + const result: SimulationResult = { + ...config, + currentVersion: postUpgradeVersion, + owner: safeAddress, + viewsOwner: onChainViewsOwner, + ssvNetworkProxy, + ssvNetworkViews, + ssvToken: ssvTokenAddress, + cssvToken: actualCssvToken, + deployBlockNumber: executionReceipt.blockNumber, + cooldownDuration: onChainValues.unstakeCooldownDuration, + defaultOracleIds: onChainValues.defaultOracleIds, + quorumBps: onChainValues.quorumBps, + oracles: Object.fromEntries(actualOracleEntries.map(({ id, address }) => [String(id), address])), + modules: actualModules, + protocolParams: { + ...config.protocolParams, + networkFeeEth: onChainValues.networkFeeEth, + networkFeeSSV: onChainValues.networkFeeSSV, + maxOperatorEthFee: onChainValues.maxOperatorEthFee, + minOperatorEthFee: onChainValues.minOperatorEthFee, + operatorFeeIncreaseLimit: onChainValues.operatorFeeIncreaseLimit, + declareOperatorFeePeriod: onChainValues.declareOperatorFeePeriod, + executeOperatorFeePeriod: onChainValues.executeOperatorFeePeriod, + liquidationThresholdPeriod: onChainValues.liquidationThresholdPeriod, + liquidationThresholdPeriodSSV: onChainValues.liquidationThresholdPeriodSSV, + ...(params.minBlocksBetweenUpdates !== undefined + ? { minBlocksBetweenUpdates: bigintToJsonNumberOrString(params.minBlocksBetweenUpdates) } + : {}), + minimumLiquidationCollateralEth: onChainValues.minimumLiquidationCollateralEth, + minimumLiquidationCollateralSSV: onChainValues.minimumLiquidationCollateralSSV, + validatorsPerOperatorLimit: onChainValues.validatorsPerOperatorLimit, + unstakeCooldownDuration: onChainValues.unstakeCooldownDuration, + }, + deployments: { + ...(config.deployments ?? {}), + ssvNetworkStakingUpgradeImplementation: actualNetworkImplementation, + ssvNetworkViewsImplementation: actualViewsImplementation, + cssvToken: actualCssvToken, + modules: actualModules, + targetNetwork: targetNetwork, + deployBlockNumber: executionReceipt.blockNumber, + chainId: providerNetwork.chainId.toString(), + updatedAt: new Date().toISOString(), + }, + simulation: { + safeAddress, + safeTxHash, + safeNonce: bigintToJsonNumberOrString(safeTx.nonce), + postExecutionSafeNonce: bigintToJsonNumberOrString(postExecutionSafeNonce), + selectedApprovers, + executionBlock: executionReceipt.blockNumber, + receiptHash: executionReceipt.hash, + }, + }; + + await writeFile(outputPath, `${JSON.stringify(result, null, 2)}\n`, "utf8"); + console.log(`[OUTPUT] wrote simulation result to ${outputPath}`); + + if (skipForkTests) { + console.log("[TEST] Skipping forked tests (--skip-fork-tests)"); + return; + } + + await runForkedTests(outputPath, testPath); +} + +const isDirectExecution = + typeof process.argv[1] === "string" && + import.meta.url === pathToFileURL(resolve(process.argv[1])).href; + +if (isDirectExecution) { + main().catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/test/common/constants.ts b/test/common/constants.ts index cc0d42b3..73d826cb 100644 --- a/test/common/constants.ts +++ b/test/common/constants.ts @@ -44,6 +44,7 @@ export const DEFAULT_UNSTAKE_COOLDOWN = envBigInt( "FORK_DEFAULT_UNSTAKE_COOLDOWN", 7n * 24n * 60n * 60n ); +export const INITIAL_STAKE_AMOUNT = envBigInt("FORK_INITIAL_STAKE_AMOUNT", 0n); export const DEDUCTED_DIGITS = 10_000_000n; export const ETH_DEDUCTED_DIGITS = 100_000n; export const OPERATOR_FEE_PRECISION = ETH_DEDUCTED_DIGITS; diff --git a/test/forked/v2.0.0/fullIntegrationForked.test.ts b/test/forked/v2.0.0/fullIntegrationForked.test.ts index b6f863dd..a0c4953a 100644 --- a/test/forked/v2.0.0/fullIntegrationForked.test.ts +++ b/test/forked/v2.0.0/fullIntegrationForked.test.ts @@ -3,7 +3,7 @@ import type { NetworkConnection } from "hardhat/types/network"; import { ssvNetworkFullForkedFixture } from '../../setup/fixtures.ts'; import type { NetworkHelpersType, OperatorTuple, UnstakeRequest } from '../../common/types.ts'; import { buildEBMerkleForDefaultClusters, calculateInitialBurnRate, getCurrentClusterState, makeArrayOfKeysAndShares, getFeeAboveIncreaseLimit, getValidOperatorFeeIncrease, makeOperatorKey, makePublicKey, registerDefaultCluster, registerDefaultClusters, registerOperators, setAccountBalance, updateClusterBalancesForDefaultClusters, whitelistAddresses } from '../../helpers/index.ts'; -import { CLUSTER_VERSION_ETH, DECLARE_OPERATOR_FEE_PERIOD, DEFAULT_ETH_EB_PER_VALIDATOR, DEFAULT_ETH_REGISTER_VALUE, DEFAULT_ORACLES_IDS, DEFAULT_SHARES, DEFAULT_UNSTAKE_COOLDOWN, EMPTY_CLUSTER, EXECUTE_OPERATOR_FEE_PERIOD, MAXIMUM_OPERATORS_FEE, MINIMAL_LIQUIDATION_THRESHOLD, MINIMAL_OPERATOR_ETH_FEE, MINIMUM_BLOCKS_BEFORE_LIQUIDATION, MINIMUM_LIQUIDATION_PERIOD_COLLATERAL, NETWORK_FEE, OPERATOR_MAX_FEE_INCREASE, OPERATOR_FEE_PRECISION, STAKE_AMOUNT, VALIDATORS_PER_OPERATOR_LIMIT, } from '../../common/constants.ts'; +import { CLUSTER_VERSION_ETH, DECLARE_OPERATOR_FEE_PERIOD, DEFAULT_ETH_EB_PER_VALIDATOR, DEFAULT_ETH_REGISTER_VALUE, DEFAULT_ORACLES_IDS, DEFAULT_SHARES, DEFAULT_UNSTAKE_COOLDOWN, EMPTY_CLUSTER, EXECUTE_OPERATOR_FEE_PERIOD, INITIAL_STAKE_AMOUNT, MAXIMUM_OPERATORS_FEE, MINIMAL_LIQUIDATION_THRESHOLD, MINIMAL_OPERATOR_ETH_FEE, MINIMUM_BLOCKS_BEFORE_LIQUIDATION, MINIMUM_LIQUIDATION_PERIOD_COLLATERAL, NETWORK_FEE, OPERATOR_MAX_FEE_INCREASE, OPERATOR_FEE_PRECISION, STAKE_AMOUNT, VALIDATORS_PER_OPERATOR_LIMIT, } from '../../common/constants.ts'; import { Events } from '../../common/events.ts'; import type { HardhatEthersSigner } from '@nomicfoundation/hardhat-ethers/types'; import { Errors } from '../../common/errors.ts'; @@ -59,7 +59,7 @@ suite("SSVNetwork full integration tests made on forked contract", () => { await expect(await views.getNetworkFeeSSV()).to.equal(NETWORK_FEE); await expect(await views.cooldownDuration()).to.equal(DEFAULT_UNSTAKE_COOLDOWN); await expect(await views.getNetworkEarnings()).to.equal(0n); - await expect(await views.totalStaked()).to.equal(0n); + await expect(await views.totalStaked()).to.equal(INITIAL_STAKE_AMOUNT); }); }); @@ -941,7 +941,7 @@ suite("SSVNetwork full integration tests made on forked contract", () => { it("Is reverted with 'Ownable: caller is not the owner' if caller is not the owner", async function () { const { network } = await networkHelpers.loadFixture(deployFullSSVNetworkForkFixture); - await expect(network.connect(randomUser).updateOperatorFeeIncreaseLimit(OPERATOR_MAX_FEE_INCREASE + 1n)) + await expect(network.connect(randomUser).updateOperatorFeeIncreaseLimit(OPERATOR_MAX_FEE_INCREASE)) .to.be.revertedWith(Errors.OWNABLE_CALLER_NOT_OWNER); }); }); diff --git a/test/test-forked/v2.0.0/fullIntegrationForked.test.ts b/test/test-forked/v2.0.0/fullIntegrationForked.test.ts index 106f1cc8..e4d7c6a3 100644 --- a/test/test-forked/v2.0.0/fullIntegrationForked.test.ts +++ b/test/test-forked/v2.0.0/fullIntegrationForked.test.ts @@ -20,6 +20,8 @@ import { DEFAULT_SHARES, DEFAULT_UNSTAKE_COOLDOWN, EMPTY_CLUSTER, EXECUTE_OPERATOR_FEE_PERIOD, + BPS_DENOMINATOR, + INITIAL_STAKE_AMOUNT, MAXIMUM_OPERATORS_FEE, MINIMAL_LIQUIDATION_THRESHOLD, MINIMAL_OPERATOR_ETH_FEE, @@ -89,7 +91,7 @@ suite("SSVNetwork full integration tests made on forked contract", () => { await expect(await views.cooldownDuration()).to.equal(DEFAULT_UNSTAKE_COOLDOWN); await expect(await views.getNetworkEarnings()).to.equal(0n); - await expect(await views.totalStaked()).to.equal(0n); + await expect(await views.totalStaked()).to.equal(INITIAL_STAKE_AMOUNT); }); }); @@ -1228,7 +1230,7 @@ suite("SSVNetwork full integration tests made on forked contract", () => { const { network } = await networkHelpers.loadFixture(deployFullSSVNetworkForkFixture); - await expect(network.connect(randomUser).updateOperatorFeeIncreaseLimit(OPERATOR_MAX_FEE_INCREASE + 1n)) + await expect(network.connect(randomUser).updateOperatorFeeIncreaseLimit(OPERATOR_MAX_FEE_INCREASE)) .to.be.revertedWith(Errors.OWNABLE_CALLER_NOT_OWNER); }); @@ -1236,7 +1238,7 @@ suite("SSVNetwork full integration tests made on forked contract", () => { const { network, daoSigner } = await networkHelpers.loadFixture(deployFullSSVNetworkForkFixture); - await expect(network.connect(daoSigner).updateOperatorFeeIncreaseLimit(OPERATOR_MAX_FEE_INCREASE + 1n)) + await expect(network.connect(daoSigner).updateOperatorFeeIncreaseLimit(BPS_DENOMINATOR + 1n)) .to.be.revertedWithCustomError(network, Errors.INVALID_OPERATOR_FEE_INCREASE_LIMIT); }); });

    fQeC+AsW4hm^NzTHvlb{72qE!`{ye8<^^8 zf6v@)7_jfglv)iA9}l}C{uQ^NbZ?V)%}P8@XI?&NSn+zWq2HfzflCwGl%)1vGvmd; z@vS4CFJ0fJe{KI0A+uZ#9&p)IWVq#gN}*u$t<3n{p>~=4h+xqQyYzNv7Tj;Ld3K`k z0zmR@u(KF;*s{s#_7}el?XfeW&zRkIg|Bn{3e0 ziY*)rF2&lMZnn~Ri_O+}t@Wo9%P*gD-lFHG(?&nDWyAgTg@H{s+D3=p>3{8jZQ$-x z;!jV@XHD!@xYBOw*LkKLzdU3Oi??oE+V!Q$OjBzER?M3zZMtqt=oWm^?sZg);QkY1 zy^Q^xmU69^gw8V7IT~lS)h>KT)S3u8&dM{zU*~xC*?-ID#LH*F&V7F^OIbXjZlCtg z>a1@u^@jDPZ5#jGSl9OT*>ydQ6Kc*jj93!(XJ`}8;PWkB&$J!xWz0I-ZtI$3?VTIh zY&thXe`(!mX*mtN9{Kl57&x=IL)`W9zfO}r=1;u%x^utG$oUlo@$sVf;(+hlZ0~#< zy0`57+PskHn$OSl-s#xCqV&5*Saj(0Yx}28>}U}D*=2ddjPjJ5;u}rxwcXcz^W7Gc zPu=UWBVt(W;U@z-Zcd9?ny+B#Kx~@36bc64cS#xuP%|98Zx;N>V+qn*J z>)zLkuP0q8n9wQ3?Ri*v)1~eyt7moiehJ)iUZ~^i{nA>rWZ*Jwe(;M=i_dMi_w0SL zRp`*sC+|+w`pL0cA2wympRe=VyRG@Cx9rbR+Zkb#TYJsPh-w%%JTYiiKOz5Z!j965 z);hCS)hpI%`C$CmoNxU$)txDNte^Yo=JD~4;pJBCOxxubj%A1Rx>oXO#(|&Xt{lEs zeDwCg<|~aCTI?BPTae}u6Jh(r$YM?RsbNdB4CYAd^iZInUx(V;HJfrZZ}=lEQHeJvxzB0My7$f|R!-3^C*=iWZ)ALVv_ ze$VVDEh3FacCV>D{YH$q&y>O~9X2(ze{&{f)-Juq?S_^1-0{1p=B@j|d2f!4c<0*o zVp+%)i^{S{ORdIza-W+9?flZ!teyAlu1!P2Cz?!)Y4~=R$Bi`(n+Kg7z5DFKD7~n; z*>*{{j8hh$I#oOC#qMG68;_csc+R}$qq9>>_{}dlerogD|Awi5h-dEjvAV_E`?33- z34LwQeMsPg5AEB|wV&x&dzB!iNktd#@9lL```deVULTQ{^0X{sj*)+tWdr^Uz3zPP zblTstZ=sK#`drWGy0yXH@;{F@uDh|w!Q|ENSD#0|{`U9B;{`v9iud?Dt;{Z5^lQ(f z?-&01RlL5C{Pp{WMXA3#53qKB|G~hzY3HNXb9)y)_MG$g=Z4dNe`WnP`Lw>W*=+mq z*D6Q8Z3ViIWC#aTKHc-D>~p7&PZw5XeH>8vDE-`40vXG`AU^vlYtgxO`@ZD-eU%W~ z34nG7TW|g_Sl8{t;Ea~fUDL07d(}L#f6}52gW8q`T7SQNdhd!Q`lfHA;x`(-Y56fF zYssmY=oUFUx8$V$nQ-Z_bxO&r*3JudFY}FKou6}}-;I!n7gG**kGGlAEv9~UbYbm; zyS6(kZjH3+d48Sk+sX=;$G>w&W^|oD_EW8xq*a4172o+VH0kHIPp#a$_WPJS(#R;O zY)-di)4jh|R;H}~6V<5x(Lyu#<-_YnC9VJSYU}w``43utv}v$y^77k}t4z}t7ld)Y z`&WGK-A*U_-AbC0dqDrjnF-8mv_*=B1|+ZksJ4R;6r z9Axw0*?Qjh=oMdk7(Y(BEZz~FlHPrHnV{Q`;pQK=wblxJKXb)5YvF};&2viA=apX` zIQ+LT5Nz)f2H52^>{RPZ`K#8;?%0GDW_6uk{wXVZXkvcxxGjm^PBp_@j6b+Ny|wwL zj=GLM>@^#|aK29J9-02LMC7{1XHnYW?aSx1KGmer^@-bWM6Vbf+MMrW8q|BdQs}8uZoS_k zcvDNOf^X+~bkj-A9@*nstd+&S7*K4{{`1w9NkKX7<~@mBaq{l#g$WnT+}Dok>OJIS zFE{U>r;Uv*=Q#ZMoIktl?|i!_+Ra*>Nb4V6zoPc?2<@*rDPLRo)QN38EV0mIdFaTd zOE2|s{n$fP^K5X=;68rC3dgP5JMhw+{8QU@t+BW`Wmy{NL%U+h`;SRe{x+^xSTEw{ zZR;+}SM}rYW7BlE%&v7JDkk>pt5~n**6FYQ6r{c1lE~73c1OJFncl&3{uVb9Cl9&VK+COv z!itj@N5|Q@ZS@?P!fN?o*|@Zt5mT;4*bla}pJ)H=#;v37_Je!d7a!c^Z*{d<%;aNk zkz4DX?HVt*)!xFY;V|sfV*yrpcqU(j-&c;>Hbs)cPPStp9NXXG_e* z_trCC-3l>#TzKo$hQ!t7`j^I)PM*}Y?ZWUD>|bXO9WqxxD? zueDAs-qx-IXur@j)@OUp*-VcU?hm8iJZjB5Io3FDOpvZegw>n2rTYfH9~8V}bmw)B zSN0C+=(==svya8o>otlAtnuUcy1HH0EE_Q3>6YV{55LlVR50NAH;V^e8#?cNo@%i2 z#5})w&3mjU9R7a!tXoDl&(7bNb0){4?Y6h~CQowou^zrDCvD2%uC^&RYR1f+H*-Z< zy8j@r_ajeVY8D>0tZ?UZYhmZuA$?z(ja*pLvM|lR)g+%ykzzBU&yr0qA9=T0`E^&K zW#Q5*Q_OE?&8@lRyZN`MV_n|Oi|l4=(UX&}{d0aUr@kBKs!4bYQ_EUoC-rGs_jt>X zy5XyS&0W8AYONZL3LW!b0DH_IU)%fU`f(QyZ}yA*CfMNR9q!a{*3WIp*Xl=>zaH9D z>qpv5lS#v!BaGiXj@I9{Z{njfJmbp^b`G4CJ<{Tp!33}ATVr3bZ8w&c|nW-mG8pSiequ zxa;6(+lj$OG3B1lYYKB-+}v5mdCE`Q5nty#i7AXuKC;YyT0~wCvym1y${Xp|M6RNKc7jhA6|TU`YCU)gMHHC_~gi_3)}pA{Vtg7 zvn|)Rc)C}O_idy1yEnU*DAXC{`zUVbsbs+#U7xAr_})%p-QTyC9<)fl`RLY2hk*g7 zej6;V^Ju0=enVfcO&xa~Te`qRqJ-y(g z(eoDLb3Gd7=U6)&*f{acqB_3~j}9|BGGKtfIl^n#-_PUYw;a8-D1T)h&$~rilUrZy z_x>!74Y^iUuw@I)-t#1+%-P6 z`C5McWi#FnYSL=Vm<#Q;-09zXebAui4($iOGZ7Y^uT?qvOh|6sz3eyF#-Hxdq|f3@ zZ08PIQIpzl%86T0`^?7Cm*Y}re!Mhke72`epwq1I@>lT*lXT)Y-fcC#C9B5TErZQI znLk?kaD&0A^`;dTFSX7sVEgjdC#NPKp1H!L_z~};h-F`dzuTyFqV3=#rI5ZyvwdHD-L%E9C`CJO3;=b$Ql9fwBf8xs9^g4DxXP=XG?e|+}4B^eNTiPo@_EBTz2T^)vvo{?ntk!Bi9BW+|Ew7x;3NbLtUZW>Xic` z%kRM}3|#?{e0?p{@gS z@7`Eh=XYMi2SZL7Ywb0DF4$hrd(GosakYifb#p^*G!@?5RVQT0Av^z{QFWIMh;J}3 z<(vBnR-?-C6Xw6~^{1n#&EOAHj^}$<_?>*4y7%$w*)iTd_niK)rKQ$k*1c)^wzoD_ zoacM=jPJd&-sV?hw+<=J`mx}v_CfC(9QUMF#%DMI79kTlG|txc+Qrkon&NJMYw^RT zi!!XwT$}HgR@u;J@+YhFh2+pmve@7Q{ zYws!>eIaFuL+`>t&g16jjLcc<>-+S_=h4D?x}L3D8`bo&o9J?2d_#ko0duUob}BMk z^2LU;;#{38Q^&_2Xd@VUF|yqfquEVs=EZE^x6V$##;V5Ue@bQ~CvuEFt(utl=3*O; z)ACxOa}tHSyqxckZyQnbTmIG--5$PU6)gPY->}C06Tw-&8?$b;s4=%r{n()L+^hz@ zH#afm9ntf8SP=s^oS*-~ldREq2-nvc0#WhW)r*wZl z{$9g%cXu7WHcV$}!i|RI0!eHY)z@u_+3THU7on>)?1_fCm#xYI1T zF!9{@^PGb{H?A1y+{xwd1+9QRBNsk5@w&Rq%zWUJMMsX>?AX7tU9G9hE`I7?xMFGE z#ffX)wV(4YbkW~Z$3LGx4)|O2>SOx>gIX=Dm37E^;Eo&XdVF6PQ)ymuVBPjGdn4Vv zwSnKwGql!fT^OEmx$g1aHLquUyx;Uv+=1u0Ux&O(_~m@|_ZW-bdQwYZKaI?}XV)bL2etMa;rjOc`E7O1=NLyk;l>55x>C=+V}rY`wqN4z9#h|D-l4B2 zem8Eg(QfdhT1iel(oB9Y9yqw=>ye8-?Q7lUl+z{OiQ}@5=}bD2@mha+T#M)D1zYRe zyoj&YVY&afQlE{Tza2A8dFP(xH@3-?(r%ohxji?=Z ztSW^Z8{+56G8yCS=Gwr-)-}L)w*Pe309L<#CS&}4r`x#(vK&mt47FgHjCBnTWSJ0e zuMI|DhoG-kpo@;ItAylNEx9b>jXLmRotQ;*kN|&UvsvJOqTb(<&0&H6(cif&wsbUG z$O8X^pG#UeSorz`N~l@zSg22c1)qib2UvjaJ@EG}ge>AWz<4%~1^y?fTChbd@IU&y zn8mK@V_`DV)y3U;ux~KSLDG&y#A6$a*u0CKmXe2{?o?W2-?CF7Hoc)QPnu1pgou>t`Ozau}DNB9^ zIvq&oDDByRm8NQLJ(R2g2RyDRT{A9NNa@;eB~OS-W~j#6;48ufuS62^1S`d5v%vpw zb-?SS;D7XY9*axJ6+U68`bu#LZD4T;!GhN)CG=QaVj3(STtyySMIKy59$ZBp@o6j` zF)l7Aj!U3#;_;nGaLX=M1vY^_sL~uqTI3qEfkr>WM3}+;U zGZI58Vn{^{r7MOr0tN>d#O+5+5Nu#VwjZ_%_QN)nFhOc8^j~vmY*XOJz#qW88ir8i zq=0^_r{XgI!Zsy@D=#39N&=EBh-L&N^BMngFj$7i0}B|J3`&m z^&o6hLOpSXWSbJIDlc%ZN&=Ut_x}umSLxnACR{?)AgY=oleJ*8O+ox5T!Gqxhgkth z@Y3Xf>gVLULfI4KsB%+pVT&H3OR^f-G6& zM7))EIBd#u0(sRZwz-;-ImzSv+w!lb|AEH>1@@>HiD)5gsFySb~yVNfmjkEn##+!$wy$ zY;;G%hLQ;ucjw11NV$3NzQx*`!7^fbztIL%Cm3kb@+P z`&TvKAG8F@eH({rrvPu|!Qw~{O^HkU|0{AJ7FoeAs4{Z}IS@biSLIM0j{s2?3Nxq5 zi4|x5zuFf-NRLD&8a;cWv(Ybb4|hGl;=3rjr6iJKn}#M$!h?QGS`#1Hwh$N z>gfrr+rJjiC8wYNpd2W@ACEHgQ;@^|YVSu~RK%mq=oDuDuY13LPy;A;e>}=;PeBg< zx-a|(^H3sCV_Ap>k$N0Zv?%$5bPK&oFR37&zyT;Y$sh1flDEe}S)=5SawSC9 z+3Jf5R!SO~#Unh(Ld`076Wjrkll1Zq-g0w_lS{#pbgM-wQgK7{su=W7>ex$v?kpmWKS&%5S zauz@ajLZS48waWzElJAoCsQvz*jFK%sMMK*7MFvHojGWcIq*ag6w0IN!0V|gm^Bd> zHHiHg?mjN=K5hZMX9ciX4pLJ!nJ{q@3jp9aJX6qifMp6e#|CmF1EJwa2eSEGV^A4AU`Q!LkeVtVveyyGsx2i zYv;g5dM#rW%!^{AWS!(ja`>iHlaeeH@~1MIe6UiApDtM@WCGHW%BCb)D7m3LHkXR1 zWTlY%mJv1O2q-iP_!2Obtf)c}C8rYM%Z&tvL_rfMlLH&ISg87Vp^!qP;DkhBC{MtV z5)GK`=H?m@=x;silxeX5=r=S&@>t0N%Z=rk@}vt)9xGWl6gH)Fd2A(fldPQFSO9IL zo|{B<<9kp#v)uW@Z2m8PF?cvbks+<`*=c1M6i_nz60dRR+2KpHY}qDTZ4pg z^fV6;Vht>d$DBP^@m^JKE~9*X;7=qU$&p^+;>?2&C#D3v3qB1=mP$7b5@D{i z5duz_i<46bfO32e14n8S=@QALL?&EmHwEdrBK$X%SyDDv=-Jt%xk{Xf%7nSn`#*fH zJbbPa!=)o9ohy+P!MPG{45L9LQgk%r#E%YVaF+NOIig(x9l0@3`c)jkOb#PK+voI=hfr(ew6iEwgE>dH(`jFVH-m?&h&HpS^l22@XYY&K4h zNn@F(%f@{mk>*#EKiqo|y$Y&H54TXlr&g05ZeGM~Nj2%=#zC|OP@Nv!0#$_wiA!PQ z)#X7mzN{)5JjfCp6fO}Ipso+*g>=5bb zjhN;|xJ8)blPPgERBFIB2gPJub;jG3B`~T?DJr~v0W9zJV;4Zh$QgDu}Z4YSP191yR0UO?tRV6J_w#q=%a{ zQBGe?dbmjwwfNPfhnuuweLk&=pt27hZXZM)eD(O_w}JVDb8K^xU~?)^>oyky(=HL7NSVM zn)GmMA&UL0Ne{OcqG>=i>EYHwbR4K2Jppblid_igtXbXF7T~r+bOop;x47*P(12>v z!)*s(xvF~#D8Oxp=+0eD{%~ti>;)jVI?UE0z^#R-$FC-TxU~?_jB3)ut%c}dUQK$q zwGfbz>d_P8)(G%g;g2QOwovhmO6XDiE zps}jSA8swgYX;S%hua5%600UX+&+k_W;%N6TC)hV7M^O00oeaE<{?-&<74#P#S!*CH! zmW$qp;Uc^&mq=!T+|Uy-T!f$HqDNx52uI6B&%|&co)$c~1FuWC2o%dDk_bQt;U~EW zKgmV-NiM=qauI%#iyn;OBG4=swz&W=_#kSG$Xiz zLXF^E9S@;scnC!Uc_SqPj2D4&!p3|g`YV8Ynd07?5ppqh7~#1g)`ZY0>7D-|mIDB0 zjRwzdI#2Tg7-+lczLIA;hxmHU_V(%DU$Pce|7hzw$Ij2$hXq^#`5(Y==|6yy1*@T~ z?moUQuBPBWP=&xZ!c|v2o5C?2*yQmLK@6euArzA*JSG5q|Mw>^z$dRBV1x%T7|@|$ zlgHy3Bcw%f@(|IXk;w~5lV@_xWVMHY6Zy&Guvi`=UWQ`wL~f^%$&2vGGh)xiN)kpE z52C{4W(^!8vHaklk&{8_94G-$gNa8i_0TFjX|bxr8CEG74j1MTumd^^lUq4NMvfvL zrWr9RDpABkDecSl?)@+ zkwlHOgiITbu|o-MfuJCa44M_x7A|nb@*ZxOtFw!%Kd9{`J81CXWQVSjr^np7de9yo zM9auA&Sv8&2_yK3UIqw85Xwm2BQYY=kbc7hWQ-{|D|C)5QdPhC z)z@$JuvR>Hk}bzL8?UqAsfUi@!Lx7$ig?<=h~F9l_CbIGc<~)&p0dmUX$$ll;K5Lm zy-7Czbec!bk0@z_qIN7m6GP}I(l0-{9zY@ivw_zdVpY}Q9|*6EP%k-|$fsBmd9yiq zcx8ll(S=udA)=rhcz9(5yD`Wdo$E=Tc#(7iP${4L2jZ)G$TA+h1yT?O9$y);Z}h^D zzH7r)RS5q;fMo;+(+5~|1&1sj*bLgdp(`^XZt&`1&v@`wO+nsxfK?BDri>yUVAaE) zDWQlLsK6m~PDvJErEeEWHf`uCk%z7ldFU#UV$-H@hM**J%DZMI!>}_*iU7+9c0>ve zZ%F0V4$KN(9I`dJYf}%g$AfpZa-6gAQXV*jZbj*ZAnl^0$!(i@ut1*ll^{|a2dA7^ ztYriS(!~`e^zo#F5g5rJWR&Qmt97;}_igH75_#~}UqR#W#D)tLEw1Sq#kfl8AUu#QV+VQj3SVRGPrTmjX=XgpB25a0ng844MXgDP$9LB-Y@Lg|8k&mXAYZWwrvEQC4ja;gJ7a z7zlyR(d3SWvABaaupnOu{2ttFA&p@nVX;VO-+Tf=PbVI-cH?MUOyF4B#An1-szMPj z+vYREWmTexWgC1(Ot37lz={JHSWvYAoFND-sM>%cu)zCpEa6cSF^IDP=3$B_X4q*a zpJ0)038A_3aqzZm?Hr&ifSGG>$HG^y%|2Z1mvGCPH zTk~@#=dTd4UbVj|thy9sL9Qn zdgy$0|_Rc#LK2 zMoBLW1l;CoaPtP8A?^Cn##k5@fU&^JXQYwfdl(wH_;nMX5tB$3INr*!%G=>xVEF1a zhvX}vh{sq)sJKcz;xU%Fp(A<&fGqtm(1g*7nJW_l%tyJJ+`KUY z=H=9y(%0b)g!qi0e!9Q{ODW`qEX2<|7^^_&g$z%(S&&Uh>Ak8)u+_)M@zv|Q$*0ER z3-Q!OMJzsFiN>M65Ijw8-UwFy^S}aqA@F}FK|sYfNLZjX1b(E%h{YpoH*ANYpnZ7S z#0ZF1i6WjT5ssBk9x749vkk^}r?SnPbbloYET{(v9{~{g2)j)YSRhs%6BBh{flzkl zVTy-`q$QM`{?dsDnL8{e!9Gorg@IWS2?D5rQ`OA>f$JvqsucJN;w17%A%4@sSV=)I z1Zh!$CU-21&~dU_!+Hm~#08^D1UN&mb3veds=%UnK}2;b2rUfb zR7w0%gxldusA8Q3c&JiRiG_U{3@oUn6;G2p7Dli*Sw|=_<7^S0&M<>Y;kHeQ5Tu|| zP3~CKD|+Bl7d?pZ42-epfiAEpp^xWd#1Iuy7-d3+zLbwD7x)l1B;4<7JOK?BDZ#6R{#&To_uCdDGV&igdpAB ztGaFb2LN*F6+Q5&iyrWfqSCER4u}vc|!p z3OQS0M1H*btZh4iO_Ff4$W3Uei-F<>20f{Jh61dLsyNfA*1G5KY0e6$E%E`zoJ@w`YYzXl;hr z!73F3@^zZru`q(i$!ZNt9^{sf!^Sf(Mr=P_U{OLJ&&L?6K~P{(qG<@RD?qS!p(b}M z>J=#nD2o(0Z0z;}4*AbD4wWbfHMnDe%1_HOZD2uFOvoHTDhl5qLc(GRNIMqBDgZg{ zrc9gIc-q7WbytZZo+zmY#}_Cx(o{(q|lGVGITqC@z*zlRFkhusB&qD8Z{7yhp2m8B_`b zixMFqP^nOpI~Mhd9t4yn3LFlefiV_6&;=GH^znR*v0woO7G*+){YwO>azUuc9Sb8e zUryuXQ$FZJ@RJ$FdJqO-!1E)aCU-21m36d7VFKt2SogR6a#uk)j`D zK3qw}P=r)d#UF^Dz;ab`U{SHqLI9t^z{tSBf(k8!n%uDv7*4vtE~g{%Rmf25@N`DK z3IYLT1pxP|h1qi6m0ZksNa8&~J3KOVlbMUULa0nfv$ipdHe{`^c z5crTmTb59hn>R+>yqrGB-{unffOlyXFk<`ZVyr?99i)%PSjK7)dZEKw0v2S`mL<~U z=1o1szkm{v&*9=RRz*ad+4fdb?m##p$dERiNRZ|W5)2o#_%(C6VXma&)u`8*{;K%MbL zn%ulG;^xU}t#E}2g@B)OFk<`Z0t+>Lyi2Qq7@|TnS0-c#77-xCzetmtH}w$z0)=CJ zLfCkhRyd>@!XS*ACDP>PjaV02mT6A~p)Uldf9Nz2Y7F=uW@#eQ=8X}TD5u?&X%pV1 zRltaeR*52>C^16DRicPz8;rFMvcMuObC3iUcsj>|GX%S01mC6#Eb@n^N+O18hljB3 zI2O&xfknkK3xUF|6$~u!Xp$w;DmM__ajX~)6{#v^MtWru$b4^NvIG100} z#JjW#7$M^-QN#*y1&p;0vcMuObC3iUh~i}l5CReMMG26D^&6NIpbjij;tYp}3PL9b z78T1Z1PV;Sz=Fyw#G2f(s8^^UfarfroP2fg#2VbO2-Pc65Kk$Wd#o65riG`MIBgFgH*!^h1s%_ z_@j7YhFxGl7U?DfHCzbGRl+nlXF*xKu*EHCFo(0(iWnZQm+_DJO zd*?t%`OX0c?~V(HR6`mt-)Ea@aL)pL04>jSp#^zE-~myJfF8#{(qf76J&TaB4uEXr zls*1A0z7eIY(K9OMJ!bkst3pyD&Y~&HyGL3X%gseblK^@g0U(}&R@m_=q zq5vy!F=wwNw8&?xq&)ELuPjT#2rs>IEUH zUSOMQa@(TbTL(f|Ss`aG9K0hg98wLPgSWM8Qw{E0p#IbHOdDKKArCY+i7$k(MF4_xND2L(k`c z?hr6=qt>vXAui+-^*aOIB;ZXEUwRIOf+ecW0Jw5=&$096~p(VQk5Y3gJ5$l4TUastYU$W>gH4XoOfP1V~6>$GYJxJgX)~&@nZJ z;0cy}K%R&d#d(t83h79YdBUeh>?Cng678WQMRLP~yj=YQS?<$)eT+zg1A!WwEuQ16 z_h5ohit{HE#K6^X1RcZ5=T6uyHh1+38icUk0L+^-Sv;X+thqo-i?Sr3Zm@O%<4L_j z5R&E+egz|?9=czMq5HA5#IsvQaQ`qKNh>7tBM`7SQ%w3cVwx901iDdqY2&FeBl4T9 z3Dg9!8#*ClCBO(P$QnA1k!0FZ5IqE6U!i&+X`vE|xNl?x(o@Y9rVEf8QaomaT+5cVY7dDmD;xKW>Y<{A7-l`Nj(gyPzgocH!(tUDdviRfI_%k#MhO8 z2CA~ISW6vzU2)%}9)weroh6jD>f%cI~B+LciBO{fv35MnP$ zb5%8O!q9}+T=9A+AtTU@ysk9A}1Ahi4b#$?GhOw3o_H7OvmuzB_ShFN^XYK6mciYh;@^42aoLJgAW&XpX#C9 zgi0vlZjTs3x1vayrT8+*E*4?igs?R!t{;q;E!kYDH3N5_j6fptN?`ae+!f$%j~Jrv zT#3j5>K_TmjLlWV2&9tDl~PCWG7k{}C8Fa@Zm!f6@sl)0;F#jN!Wl`*4~d4h*j$Co zSV+Q2Nzv_ulAtUb0fB_@6c{JUh~q^pN&&nCRdhU!U`CKJ+@FdV8@Qrn5fNxFcx{L& z3|{{rBJejVFN-pYn7b1(;*(_DQ5pyj%Ns@NA(KP|*h+D}n5%+A=;jMoL?i`bffa!> zk|>RWfiU81WOJofXUy@5h`W9|&PWC#!umYoYl}HPIE0QO#az*?1>}aTb&Lm<5(ANG z2q8Ear4g@~VZc$$tO+s0fNC#U1{llH65&)C@j24vfOj(TaR>*@i_~jJDpEob^UZLG znsY`?NFg_*EEh4t5Xh>hgd*mf;fK<42a{!debL1jIh1$;o}uZ8ko|+8v{Dxq{-t~edxvw+>t@zLUi+pE^WZi(N+iE zB!I(z6fn@uC(>?=8IgJj91(=I$m=nV2!})HrU$S5L{jL@a2903wkrD+F#T$TW$VBsS6UD7U(VQY)-39(dHdxE5g-*Z9id zzLT+aV3iyx*>ez~?t$Qu0bGuf!E{rnkRuVvL1jCUrjdwAtecJ)S&mf(2NoHHG}x&U zC&~zSBN4^D6LJn<#okC>RsiFsIT&Ige)9FCj;bdsxI?Iu#+LSD2zAc(kM=S zH!i^Akb1YrA|({DqY;sMcjO}KJ8}W;br>(nWx7qxo&)3wl=yP-#bvylCTWhcspGjb z@$qzvi}Fbr2BF(QUHn8S6e4-BL@*?h_+>I5>9WHsba@AaBML=~7uV#uE1`(HH1+P* zMer6}fk)h>F*e1MEju-PVA)}M4O;JF*28#{t;*DK(2$7ucr}+DWjb&nK-58~01-UT zBk{`=ePqi{>DciX*hP$8&gAA!O_5~nOaX#Ilh9@vdL0;_y0Ney;e-!y?9;Z}MD~P{h*#W>kaXTp?Zn^i(1CANaa5-u27o zO6>a-=88KS#(qn3bET$;I|#*53oZ@`uh95{m~TJS|?vK6_R;z%1ALEMy?0S^>2g~_1^-guJMRMm`2+D(W!-;gne zrwqikIbGb8n<<`f$q14RnK4vS%oOd&;T=9cQzB&1u}54yi>fxG;Fti34d&b+aV1y= zQ5|if5n@h+&}1TMD@SR=JA_&hN!wRJ8RAT-hfEM*opmvF!!HgPVH5BWqiU8S2uHv) zmJvZ9RepHMFK_0!<7DjWLskiR6e>>;-zPC%pUXTkHFFLk)WL_eO(G7S=~P3GP2zw? zo=qHAD$4=ghO*$-uXM5lSA%F(C9nfcum;uf?BLIT* zAtDlJLFV)EcW2-bI=0cFAp~Pcgdu|Ew^bfY%m`JGzPsfNDVI$DtSBc9(1fdClJ9*rLm=OSgT)$YF>&O`$ zmWztjdqh+dY4A_O&r`esduxkj3Vxv7_a6id=u(JA%=Y@ zaNopu$1e55q}z4bD&SCMv3e~U#7ZdQzDd2ib}{L$y^2TN0}w;#G)0=$D`C$;jOxU> z9FiEB%!3qdmC(lFvTz6;qZG>wn_hrcV8qL{QBg?wBDrBy(nLJ_onsSl)tC1Q5%Sk3hBl$nCO_O9Ee|9}2hW zVu+f+6+^w;SPbC;3gX6n9V5!2DnS%WAr2rxgeg6iATrj!lb20OitOvSxUXY8_mHDV zxw*yByJAM9fXrH{*>e!1jRhBf8%E4{qb$cL>K{O!I^IAX3YyLa6mny<)L>zdu|hxs z_@2-?k`AdFkKk>$y!PP0Td{gL0T8R{J@(Fbi`6}IAxSNhVq z!mDTbx$^OZjkuksZATxLYruL+{B9{uW0=P{v-r>vUO1X{UVAt!HU(py%$qc#6hEQ z2(8XQ&mwIgAUWhi&t^exNJ_$p1(3~^P-6K-z~Q4}^{(s1BwT?^dU#V)I7H34A|wIi zhCElvhtN_(he6c0>3H)`v3mFOVkH!DFRJ1Ny%=9tbU_cfA>I-@S?nN2v z*2(6ogd(1Ss(3|Do-2wN3Rm=E#!7wJTq*rK-d9qr-W|P|`qE#3yC(H+u*K9j*f_)# z4x!Uy*+zq!JqIzo(gw}_aJR>J$tJhVl)}UjrcgR`jG|ykQfU+{AwB^#0!L>Q3Ri1T zIcTW^Z-s9(fFDFUgdjY~EJ3GWBFOAgUg8KrAIi-iqKLSvZ7Fpo&2hUCE0fXaEZ^Dm?iv{{lgWz!Yk?IO z0e5MPm;3l4pvVUn0bU|wi@M#ZUKT(lG4)=BMSjuEX%K!2;YjTagi>TayVSlK9ks7RH-KTiNtfN!5ifP zw+M4xfFx4}MVc-cj{q5Dr-Q>=(HJ^5W$G!NE}5DGVhbQM@roYsQ;7=D5hgJ!6DFCu zh~zbxPJgHrln5z6Az@qtY{7trCQdv&ps)jB#9Jxu3!#01&moo(Q+RmNrm`GJI2Y8b z0b(d5AOT`M!HFHAY~U;LVc?t$SsUEpgFO`r+Ay$#;D!EO0kH+7z$8=BDuMAt2v;y6 z%!Q&cbTft!88A?G2#FZ6#SKWki+u2O0wEOz*03Ek7$cD&9cyyaRYDW@|odV)ty=CCy*inapaR_asE0}b6evTjnB*7L!zBQk)aFET zJ}M&(a%EQC(`RS*K|Iv{zWg+yA-m`SY&;0+F( zC^3kRUuhV?{Wn6W0C~cM2Kwt5h<=Q z!WgQyw16dK*%IFaZ|-r~{6E&-Wm|S#N6+lnQ_M$Ly2YiNwj1^t9yz?btCub}%1%2w z_WKveACT}Q&>mQL)hC79PAeG65FcWK#5oD8%J!Hek*L5^8#0yYSK$LJWh)(89p45H`rBCoGv@qudH zpT!@$$hXNFuP@&BUzZ!}6X66J>EP#Bo@jXfo)405h4ZKm%=0J_* z7m*s51t@64ZUYZ2ps>cqL7SsBMi%goEy#!>k8ON_n1a&+9^4n1QM5j>04m3Qp(Q13 zbt}7Y5s&v4_PmApYtbV{+3%`>N6{X|41S!F>Xwk1cqCfNGV<0x6kSr7Eh}LOOBT!+OxjAG5KP3i1z$s!pep&kHSLVn`e@Hd|Zao;hk2d<4}JQ&t)Aj;aJ z54Xt&oVCdZ+i^vs(z5oHP?IfOY~9rldS;GIvigl~;bJ?geuHBR`By3#8#VP$b*r@q zG|Bd8fZQbNZ|O_;&xMU_)3}ivTs&y^NWp_l~#dYxraqXTK&+6oh4JjL&^us9-xoPH#J0PK106ej1hD=xf|UtjY|^h zS*SzFl@0t0rlqot_OGv*>?>KSV_g|`E;*A_&(fDKYk|)@Nvvn-V?DB*kkDu&`-u_M zBX*AIB-k@F0>yL)xOLsx2rP9B@mV|BRx6cnYV@-gM*(?xu{s$eIkHfDTPHc6rB5Zv z{R|0>ytqkneb7hh1`-+_7dfx!j$A@RNgpXq$filuXJ`bv*-x@QOP}?T3Wv_}u`WxJ_8A(1ZuFA4&(ghLCr*Kb+=kGo>EpJCMC)dP342_Ps6q9Hx|>j8?9sYrPmtLNoR25 zr4)BVQE(^0q;({ef;&kOt!UPA*OY=g#GNj`?kg#?VEgp+R$TcyS27NbK*62FiB_B# z+>Ai%4=$QH-xDL~{otnw?vhn!qPu==ha#&Tis)pDgWFk%j*PrGWSCAb#<9uWEdDHP zP2x-INT}a{Sd*;LiasTGO*!78?VM`@`$~!z+bPkPHvHBk$22qohjO_$OnZeLabaRg zZnGvX(30zw5NtY~0jFVi6Z<`gHOVxsBcYUilK9bz!@0YrRQ89U)a49)C5toY#^;xw zW?PdTX9h-)!qe9)$(}PST6VNXkRq0ZMtSFn5l|@0JrHG?YP7WT+DR)MsW`8lw8EkA=@6)E1Mx+oBaxsRpXR5-2*KIwSNGNt|lMq3_-PR4OIOrxh)3?m{VTgpAfT zseL8Iv-MnBZZ_En(XI(^#SD!=IU~tGtvDgS8-Xf-kkoo&1h|7Z3L7EX5`Aa{N=M1& zHY-?wn-PfC!$q?gd}0I*Z$6)2lTg*j6R6$In&h8WP!D$_P>hA7mTP-)swvx>(B?0n zE|VzLDUEmb)`hB)B=xj{=eQ4=Vk+db9?ZP*B68xBF zX+1Fl)&^N4*a%T6`78$z1Gy&q+^lwD-?-OGOMKYq=7ABwvHZyG1sNd(VICTR!Zn0U z8li*EH!CfPA!GBz2-ugAJ1RCp?sQ@l4%7^04Iz`(2z8~pg@b0k}o4q@GrNOYBYKxwzJ#68f>XWvn=SwSZW1XzR_()EvL$& zuP3isTa<5XXV5^()%ZzWg~~N3k|f6LpBq56B0tGBM!q2q%Z*Hpn)<>1xp68wjdBe* z74K&_GM>dT`x!Uwwh^P>l>E5%ERqlBsfcxUQzWb$hS;zS{?&Q&dadEnJL|OqxVgtG z6*3`2hWw4v%PWn~xj9#(dbQb!%{0HLUuu zrcpXVZzTMS*?4$TsVZ7gIF$9i&VUz;3p0Z25g#(CzD`DpD|@yHZ!sx#m+d;^4I$+l zJI2%3U&uGM9j=&QQLsw)3T{atXzK$(E5WZ@lG+&x^*MJ7x9NF~hC+Rw#6`3DIbZIx zf#AW^z-(f647Gm1lGb~<56Bds0{G=VTgd&iL#suA7g*F<3BKJzrlu9zU-$_1+(M-2 zOjKJRQTi=U$RQ%-zK1+92^J0H%RZP(RJdq1zbMO#wZWo!`N5e1=nX>6dyj@c;TNwh2}2Eq`W0pii6zpzee==q zH~hxlmIRo#KENcmh{O=k;Z*$+YU%n-Ap@9*8my+#VsQ>f7Q;yak&Hw!G z{^P&@5qyGtu=><&P_~eq;apZal;q;rT7+)Kv8g*r%-dt;oACn}Bvrm!$U`*qgx5#G zS#4O7V0;n?p(D39wgFr!YnVLFUiN<}Nrf0tt6jB5tDWDu-a^2p6t#NfP~}Nz*Lq75MyD}ZI)zZO2hoQ90qyW9>4#j=li{NS%;(W&!+Q{CX6MOwcjj${jaDfvVLbO?zCs1B)DmY>96O&UiU zVIy0zA<>32klTNWUp&1fX$u*bX3}xWb+Z6vn~?B% zU;%4O!s#Z7`HU>U`6jwa(hxR+u7zf}? zO_OAEwt-B#*$%0c#t(3ee$$hZLD>D~@`JvL#SgF<$e_!X1an3fpop(3%$Az29~f7# zS!0&X00St=cON14a`}Nf?6~5Lda7+nGG_zm(9RiwIa}C`rSSux5;vKY4?-fx`9XKs z;s*d~e)y$DTN29|S%C6E2vPO@z!oa&8L$~d0wviGLf91NFB>hB#=EFD%j$>;rA$)~ zCT3pT&R_R-kGP*Lgg;uDZg0c+E|oPQ1#Ah~n5n=;nz9aM#BW$Ce~- z20lQ2s&LILvThY&aZ!EHaI>RLxM#Tq#Tlo3Fw6t?D1QQEC#8#85`B)&3|$$6o~`OGJ}V>WtayVEOM z$YAwW27`c9XL6h*zp?>8yqS_pr6j(xd3@zs5QqlBH8WFQ$)K;IM4Qqp2LZub5?&ct zfI4$+$-XKZV2swPgo5CjziR=MAqVeugh-UO71|70ski0Emgw|JUNW{shr@mr!OXYx zDDrCZb~ns>couAFZny0>-jO1DVy}qB%%Z$#jb!>Xw`A0!?;Duf zWbMi3Dm%`$+k8Q60Ir!u;1dhr=84gOJ;`&7EI_MfNHR1&fV2FY1$^eQ4w3Hzje+Y(6gU=?`0SC;*Nh?vAx5 zA&$K-o?di^Yi8PZy~jGvU{Z>U*l9VGWIqT=k<$-w!rn&b$8Rz0NtRL$6lEHM5a9XlFMh zM(98&7fLk`wUH^I1kB^-%PBRaGM-t0 zQfi18VdHA|Ey8u?WtNOfQNxsPsuPl5#fZVb{A-P+-53L&GJd(_9#SQZ6-GiSr-sl* zE3{j;$+J@aMl~c>E>GwySv*1a0e*2-O@b>!%lfn5J!AkHBLMYi-B%vw_eKbzl?O%u zA0dyTQ4^p&mh>^Y}dCoFcBNXJr-3SzAA+z$t2%6P@(L)V;5?vX20zt00 zXl4XkU;%yMG;6mbdW2|MU=0u2ttG_{pOHTqIP7@` z9Ek`+C)7jAH@4$t=mhlU7zsg@Ge-J|igY8QnJhODGov@TZ6uU(MF_rhEra$jVuw2( zvWEyXumLV&Q4N&jW4i(HoAMKN2a$@{kndN^ zS!vAK4#Y?Pga9fZ^tMX9seEG#t-XB*W8{T4*)N*5>~w2NehRlw@&Q)yhQ+^_%^7>w zuZreq^DON{A-N0GK>1+1gLbHf)(B-n?NCi0bCz%H=tOrnMM3QUcm9b$?n(j=4!m<js>8QKNdKWgwfF_j6^c|L~-VXioR3GbuO?Rl!ZdN z=v;&cN=ovuP7vIj?MOmK1NjRPxks{H$^ihw=PFD-MOz3MJurd+9tUj)A4$$=Xaow~ z5VL8V)xX5adjf@3$QV5_g4QhuZ3iDo)M#V`>ehACL(D`t;O##*Paur+2r;84M$l62 zMH@Ot$n-RmHpmI|veqMPbkYdzH~(0OBt1f2=z$T8YI#wQnkm_ml9eDzUZ@p+14ptu3Z6q9yV4W(}o{?)v+T|M~*O0;L zH#!=GbNxndLE+ow8~9iGpuF2*JwPyOx?eexIL_hU+~o2Yv8}jhW(aq>e;AHbmT_=5 ze#NcW$4pc+Q6{Y^?cTJEC+V95gviZX31`JcGfgjV?JFtEIG~ZA<-JmU8`4M5&^oZ~ zLjn32k~szx12Mx#5|SATrM;Q@%lT33vn|l6nd|62>zeE8F}JxUs`*G#F$eI3yHLtY zNh;qn=YS10^Nyjf(m3ZBUYm8OUEgl&3Xfgcb0RF)tP+A^N z-AiVwBoD1A5mQ$D*m0hYha`usSehI#V0s9hK0>DFmI`I~^`?!Ms%Vp}QSDloOXjyS z(OO(VDUPuu^l|{oxCaGg)ey|_i?tCXrSb#m;VlrNE{z3DTC-RacYTCBicSt1>}Vxr zILZMEg(~xCp20ao=`8ni7TA}?jYGSRA5RISP1LH0!3*-zt!{cQO(8ev8h(bP+yv#8YN*Oz( zEE;D(AC9}G6!sx0mJmhnP| zH7S9XoL@u!5AexBsRp4^ysMgtyemBXY%BpFrky!?6|&E=VNaM_LX?@htyW3c)NS3D zdd0Rd3`{)kC=dR{Y{q!-bn2<+QDRknHGq7mZIsJ5Rwp1Omv3zG#Ga3QV{g*d3PZlZ zobl{LvCj$~Kxyu?Lzz45_3}_Coi`-GnxUpt4Ts3mb?RxfQmxbMDE_dc_(SoU?y2W( zVQNl2L$al@mv#2wnqmD#D@O?SXoy_nS`J_Y6ll@jgPnQ;SJ3sxfU5(VlE)?4pu+^W zgQXjg5a6NH!}ip3^b@oKh2%{$Nh6`OR~#}zr1$OAlYXP-qcQ=WUOke{Z4PQ~bBd(o zn*@c<87u`eAQb0euOxBvvL+POA5H~*s=y_)tZS}c@8yfh@f3EHuO+RIi5QaFXAKhAR(@%*b$!oj@GAYhOu%v5H zJJ5WA)bQ2JD@kdL>_`bDgfuQYcEgAsUwI`FiWeatr{Ax>0>CwC$F#mBP>KC9#3!2Y z>936RjLj?LCN4YryZdX*R8)j)L!%*e0=Z;TJrI&8eSg#&`WMd3$sdzg$G{&~DltN! z;j|;p?%TLtDN7`oi`PIV<%$pv>Dti%gBO|^upP@i+swn8*&g^KWuNdo{Ia7Krd+bD zlqHh=Q(kt;&N8V9Ij)(Fx^Kto-Ll}|?4IrTN7fm78U{W))lxjL)Q%2VLFrv9Nj}a?Lr?s? zLN>*npu7xBDfeAC{_^)-^%!VohE_d&w^*YdCGX_(4KG4G&g4y<)N##B&#RWS0keuS zQGh*uHe%ggVHb;M7NE470YunFpxY}+dkn;HlrWRsQC&WW4At9a1F>Fql&X$g;>?n?!78wE$$uCqr-+gg zXTQ!KcxIv+(YKwHkOpCCFJeMY-=imMaLr6ZpKw5^V50|Z9elz`(j_mG);ItTAZBre0nUOkZnvoC&Ig1DMSZRwe>VN+VfsJ-XYLwn&Qkj?}HC_NdZZfH`3u%=r z$M%OUIaXV9?DWE{SI9d&vjFA84X`1yJ(r^oG7y2o*fC06l5) z3L6hu0cosKOo)DTW%NzrvH+%QN~aN^I!C?ZNd&NQX4q_QfAmf7ENHbA+?&7kdV(15wm! zbUST*fpMT58NwZ>AApOvMIPmzB!BW6$fOKW&&Ow0Xej%q6^kF> z)`j0a{|et~(`wt@j-ux9uaLQDWCB{aS%9J|Bu*Y!K$(aa-zp`slYtLVb9h`c^MP)T zv<@mSqmMA}B{f5tgYyiV_Te}y2*uP&30BYajC*~2b6?sGw)p$`4lxz0r?k!|We7$e45GuDL05g2O zACeJlfR{;QhoxtSaLvqNb-Ik7sdbORBd#v_TvGeb6L$Pu6zIb}X2UePC+n;sI7S@DBEhEp2VV9QkN6C-V-@sbM z!DRcf7zGIoF)ua*r#xf5Uhrct7#GeoWx>q%AvYH&MpZv7I1cmzDu1euUOt!w;Zl;= zU^w|;Ps-`qE#JT}UekB76Up29uQUW&?LOXULE;6L6iN?9;hNdVuDEzsjHw;RM6@zVWcS*DNGLnsMSl@TM81uq3(i24B+3q$hxI&CHE-w5DGfEpQbYZM3jH8ZABh z^A2g1MrNNc`BJEdG>8>~?@G5=1E}-Xf!+r34k?RP!|v%jJx7G!oy~`qL2nywT~O?( z7%EZm`wnT9R?F^Y3%#%49nv7D9f6YEe2{WNNLe%*4rKaGws%O?bnR#d>~9>f)6x^t zDvg#lLA)@0Dc96%rn4=UEBQr_Nif;EW34_~0#bJ~G3ruJ06}5>%e>BhtI^+nv(cY2 zQu6&hZ{P~8H}IPa-XVZ;Ial{?ZJ|ec-pQ68Z|X*IM*i}P5=o5QVAuH^ah*BqK>?jO zOp~2GPQg4q{Az`FNKc%m?2`n`FRD3`fX90zl&Xw+(abL`Qq6g)DeXl14bFo+JqdaY zO-V^ABt0%ucJ~bV{R!_Rit+A)Bg-#JCt+`pz9|)4f=-QBmYa{+c{lFK(1U)FZ$Z2%W?U#TLMAd?UE zUblQ>YXxFJzA?r^tzN#VlG)43k~kYh<7NHYb0G}>o#ag3_GEdJ0awa^VH=Rkb#MD} zl>?(UL%fsB$GcBFEX2*@qM0?#b#278VzQUVKqpS9A@b48j|px~Nf|JtJx)`C7P%$V zm2zJ_A)bx8(Qzb{GF8aWbWLe(Fy8l5>vzbCG-{4aNf|IiF)mYf_ZZ~m41T*NNsGLJ z2HfU{=y_Z;o1eZZYtomjaqsZ(PGTaX04JdQ9daV4Df@)TvQfTBf*kLWP^y?h?xbr< z>%Q^6QyTB^)c=`R5~vP)PiMTdHd%WMO?74FwfV$bp)vW!b~ublfh&|H$xsxGh_hH- zHD>xW&p8Y>!R3I)p32ZIRQX+dJVW>0i3hE8jehnc6eW)avZYlnD6<9K~0Lf**g^H;rSHqqzF_CQIQVq+vW zY7G5OA|?a*^5R&pZ?X@^8`#Dz-x8>fi~g<=w65E!F*F7>6Rn2=z=8l^sJn{ygK~rK0DVHn8`bz#@pqOOso$!%Q7Ix{&mshF4;A@b?ckpl2-fx z>mfae^vOaV-U}}2v@2gPnb}nHmQiT+zQ~Z6w~;U!A3vhERwn8!th|&bo@ox8p-4_A#-p| zjJv&g?sQYLoln?#QA0H4wq7qEz#q;tNTjZl{V=RfrUhH(pE%B>++;sY35N-fep*nn`B z_|(IhjC$J0q6uJ1t|95b*8TW)AlJOpp$4v*>3IdP4VYDw00yScFV}LW}s#>pJaQIk8e+MEuFOMi)&`{a9fPT7Io#JLZQ@mGb!vQR5D>bEape6 zsbcKg9WDOF^IxC`nDnU<+2FNCqj*L`eiM&U)DP-0Z`@9oKiN?t=z+37Y}eR>P&$KD z(5~L!K45R!s+wL`jB958r*U!(OU6*$#m7m=gy{oJA49_GmJd9n7^Nm5_O@s{ zwVlQ4)VHzHLQ;<#XJe&Dftm-HPSrW7?X;{UQJaxWs(r%79i(;p0Mp4{GAU7nEYEev)>ly$Nx(8c z+!N-LwQ}BTgP_L6u zh=w#)H9CYB0_t`0sn^W1-xCX9BZPaMe3Ep`$O0U*QJHH+fG)Ci^)?Dg^I}Qcwnu0< z(ns4G$)9T6$TbFEsUMYZ?3M<0E#K6ip>iN3S=u@3p4Gf4_LB(92P91E`P7EwlO$L^ zo?y9(|rl!tVP;j0Ch$MH4{GR-dW1y5c`tTuy#te>xClG8G}gA? zX%(alQ@&@$^-Q{)3~ zSQbori7?xdgZeZgNS*z9!(R{X;bl=Xa#Yu)vTCSDYF7R^R(8tr=h;uQQ+|CTkSn)S zYYbd7lj#m-zc@Ot2eaQ>H;``<$vLHQ?xFq|-@2_fQ?D7a4YQF+`K(?ulX)!`HeePf z$r#&xKVP1p5Tt3e?Te>g8Q&yM^X=m_^paUz^LH(P%KuBpQr{$9Gx7ny^Y=~CHDBM= z#QfnOKVP3iaLwPf0P+UEyA~swNk#$r#g0A-NR8BzdGuE63&rIdV`Ow<%Qt$brUT^^ zQT{gjb@sqBImyPI&V}2!`-UA*SlZY3EV(StoiA|FOhun@fTtki06if6%0bvnRHL6s z<8bCy8sAEsB!mv|mtT}~LjL8-IejH1=h(A2zc}e6d6;isJ~zSmCV`l5ABb6gQ2|sh znpyUV5p=Qs#d#-*#0-r#1_d?qu-y~@>Gy;WhjhUIgn$+yCV8DN$b_>=I?$OzOw;+rIGz5r5gMj+G> z7tMm{i4k<)dF9|wwssjBfr3BmN75_6Kn|WdcT?<#*7X60j`HjB)a9ilb zgWn`T^6dj8%S!tVA(`>O2u5kFbl&()!YM;fpzuxhX!(K{xp@L%hq&l(h65OkAL)QV zcLPc0WMl;DEr5$=`u5gB1Ko73D65*?=@{SkHLOjuh+G5Ys(i4$8jvjI8~f)5=cuve zPxsa=-w^FMw=jLD3U>=b{Sdw()zL)QNGPqkA>g8$Z(n=yQQgB zd3RJwSxJoJ+lLqydUPHa&AjPK0ex^q$^tvg+~~y;-w@|$XK7#rN?CF19P~uwSppLy zz6qO@4>xM+8$u%IbOAECPZuStBp>qi{ZE|d(<}RM(X;95D_N#Xmo4U0zez&m+n2u( zN%~D9B3~SJ-z-ayqT`~!X#{KWu@fTkO+q3=BXHoBVriytH?tTJppH>|*6vXZ2!Ohr zbV4NM^x{5@vJm3;UM2SK4Ub4UeRK=>`$Yf(W#(RXUyJ zCo1AiKanI|zJ1bVA?6Vm&0OQQn2T<8G4}g#*(VA;NUAsBGG?RVHFXv%+z&Xz^Z6#J zE{YamvdmDZe|w=`G}Te7 zQD+(XSJ;MBop|{Uc{N?gDAmA~iy7NxOTH@A-c-fYjCEbP1+eFHMO^9(T&^Dob*X0k zm7_gGX#Y;Zzo}3!nho5dY^3CGRZLu$Kw9}a6=fs&@)|mF&|;~XzKAlBR#)Y^%EW9CB=U2bT|U+-?_-7D$L`iYXn`uohn0Sc`kvT|C}_`oY0-F^g|bw==&`0U zDRtxY9%OE>UM`AUfebtr>Q)`OC`tqmg}S9de|a{1d$vn1tyxdqR&6WaR__uo&GNvL)H1qOUpHr5edGkI2EKqCG67CjM=(%)cHR} z((H$f&y^AS3QAPy0k^*&k}sqBxzV*Rot!F%x`+xoWF9`PN+Ip@Wcam!_~ARD5O#Sq zd|K>skc$jo>mDAy$2;_zSrk1PKMI~N<=2pNc{G0C223MlrmU?7XIvKN1oH~GM z8YqS#AF6+pZ>$P98}0zZpb_OrnDrNtFlX?25Js<=jp*8Wl8fsAP!*%8gikj)@a2-$ zcn7UMIlM$<>a9T|lY+QjGaK^daW-HUCv$4YiT>bQzD=g@zW9Yo;T&5cI{2#Qnskce zkgs`S0n|8)KlPShk8TV#K&)j^t!b1ml7DUCpgXZ@(Z3`>Ff0y-5?8Z%Yy$kMqf}2? zEOUKg)?YX*zOCj|L5E0;4=!Le2rghOKDcrqjHsuf%AV`t8o4HUmqndZPS^5mjmV5@ zxy!ZsDoSwaVLPEU@@+D>`r`e2NJQpCcQv-Ex~pOW@~_QZ6%$Y$xhT(ZD*&oq9N&!zSP^-KjLVrYZ^6sc_0Z;y{ zze1j*wLmwPHoE-?d5Q-XP`YB{`;UrR{B0lbF9Q*){@)}l?HVNiy2ga8rn)gGAFS@w z{XqE!>$(`b1|_YyIiN*E_zi}0!SJuvkZYm^qnT5pE-smLPgSp(S^hu#PYDaLgDF_H zd4U`FG!`}^X;teFmr_p1Fx?WY5UxguN*oensoDte<6p+EY~C~02ZSy3VzF7=HW?p5ge^F z56qw^TypPr@K$|zpx(|~*AfS9P39O78K6cg7l;QH2O*~N#0WL&ehAi(Uyll}XBME_ zg6c0bU$6sIw9zSvuSBaA1=>nSzJbQ_0hOJ6sBt6919+qI!Ip>f=v{FK9U9*Rg=mW6 zKJt(2PqzN)8;{8~$*3R5^d*Blf|-gVd8AaX|LdlwU(#^RY(6gU>8tpAgqvO@}?ag7Tni;BKU# zOiQ;MAc|&5qB$d(K2a}8d}bum?~mY`+2ouc!eSk5%Dlj4#cTDA4Dtb~y$d4fj9zOd zg9uA_sNKwf-Gp2M%c|tN;fX#`vO_uVh9&=|2AnJB@zJfoo=JH_mDkD7yvF#~&apNnGZ9{}sCf!52%C=#W=;!*?5*lzc)==B!Ev zDoWDO98T@<U)7awHt@zdOo(aZhj3pP?q-DZ#BN*lOcT1dvB5yk!Lay3(eg5n{iw-)6fT(^@Az7 z8m%ozy=0+i(i-(BuZBn8jREZlypc(FrS+QGkgwqCt0=(*$l&KgbdWryn49jt_z$I* zBmlAiA!&olw}%t$p9fc8#bN;sE>15Y2GYz|U%c-YC%+Ws|3)S-lA8r6y@UwN6CbGI z#ogjW+p_4)ysOc6U;zr!;aNZyTvw+`5G4|IaKyF`EQQmOe=0 zyTyr~QM5j>K+X9-)GbaVXBWio8ZP(xKD{Qv5_#mTm;Gh?goH*5)Ds(2?SEufjn=*- zTC(&5L3Vk(zV)J6bm`)aR!q8h8~(Rw7bXc(-S0rgE~_}wX8BOfRz6@@^1*Ib5mxdi zJJ?eBDQC)k*a9_zX z=~$a&vydk}nxEE52RVl}Im0uRMkpAPn`Qm`bk`-MULF_$rz$_PvqnY;Pi`B1`$m@S zEZ@`)p(f;(hW8WW9#Qk9a#Qlv|K-%mIK zqp-gGq_3o8422D3bChfvk}1!O;NRyfzZLm)BNS-MZMuk8l}_1@*UGUGYE(*RJ-%hB z*Qfp3fDY;XU*@oQvH7(D9Z;IRI7DksFYZG%vft$c8nVk$EiaNhVYG#nTENJ7)62StJ`V9t6 zbwvHiwAbn@jAVFrpKHto1}uIIb=hk}3K(F;LO0-8SxaD?zf}k39YSb?lx^hkKDqt| z3&}mciwYrblS2E2kZ+eKW{K9+GYt=v{4FwI3E7EYBScFZJMch0wab&=iqf!d5eOmz zla}Qg^HIH^+N8Kcjbzq0O2+qUU3K=e6yhM33WW#iPCDVXa!8Y#bg&t>WoP#_j~q@1 zLfxcyl@yZ#%=nSLb24I*?-&}vS2eikK~@kb$xXWPDj05=eLx?qZ{+{ybWvXt&1JHo zL$s}wfq`WkpQrb$IH45yA(3%SS6|68UAl7ZR4PdpOX{mSHY=BJ1}DE2Wj`&co9VL9 zw1y{8j#9S7ZJ_TpU0uhO?M@%8A?naf7r232bRE8Wk?{vQy6NgFDbuA~f^5o?wVD1h@(`Cw0L>#nu@xIJp3MYsR)HA$qbeIkYX!r`LXh`g(ULMUfzE3~1lrjWwH zo%sreN2OH%^idu{Cue3K;3jWcK9fwyIuc6DXT4}I!HA>@RUZCYkvHgB!Iy0SIvynkP~{MOS|jq-qX?ZCv8RSm`|AF7{_;vw0mOYxOe z#R$fPsZSTlbv!INs@&Nmw3w|1q^%g57mN!Z+nOIR)W^SMakK>)4^xSm7Ta>dgG%)q zEeG@w7rDkt23_T4j^a7{KqSpmAJ^VYkPlF~gZxrV0{Y|Md3+V%?1ydR0As0~q~ z^XbCXD56>=S?3ZAv$(7tuymg;^ea@g7C&9MCZB9wag5)ZpLX*?`bKMyYg94>)$RZJ zZ~yE6E#4~MM0|!j31cOqJ6NnZh>YW-bS_0kb#> zF(oJH-M#W{bnLFqVANA}2Fy~K@tPjWhdKzJ`s4w(tz#t@Vi0bowq)Ov4R6(HGYxe? z#Wl0U{^z(sQIesN?0pG>w8=x8heG~(v= zKACJG$nwAf+9`zj%q_{Z3@ku+<`yystp&O%n&`|eWLchAphnvd!+qQ$Ort2zlCr}V^yLfE(`cleGA))Jn#WU zB{n)~+d@pF(RSbi6tf{SYRh!p4Z>Zfu7PE}sxeVMz-i@!F5F0ma(9mGRX!M9g=ntd z*gv;d7paSti!~F%oaJJWG=6DVLpGHS;_r&oJ$xllw`*pu%hEPGaN-c79-X*mCev2} zz+q}hxnb{!)GL;qiE7pB<||@3w zKC^(o!`ebV3jV(VuTuZV%om?DZ&#d0zPat1;-Ah8!fKP3!a~js@Yl!EctcY+(xeWy zo@}c2j!N;gEqp0E}!yumRl0x8OfyF zAHp^~EhCv!RfQDOxu>~-I#GvGa!Cj#%cD3L{^{;%YAU{>hW9kL`o#BR7m**WUfkAp z{-w%#%}l1o$u%tbH+43h^J365DY~h-8IDx$3f1!BZBUfGEw`z83cie2reLQvF~po` zhp^ez9Q*?Du3Jb_w7%Ef)+91@3o#_py4}|tsqMGyw2z(;JMp_(W6R-S^g=o_)1V}DB zcIz)p?Af8%|;+k|sT5FBX zhzPZetQmJAVhcNiJc?0jKDvcO#OYgoI^atYpJX<+flP|~5Hsk;sBs1x$PJ3oB)TzJ zGrp8bYCfFKzhrco*6XIa++pedtKNE+imR6I<%9jn_+72{%AYKaqjHgN44B-|kEncO zC7f*oZ?@^Hc~P!0E=T=azOmh3otN@WO(+cQDBYau@edbWIk9S&+Fu!l!kO#omMyIo4ZRN93nO#b`^AWS{Kfij-t*puB) zHj~DN`TA_VC+U#gT3j?TeHDglW;1x*8uwNFEe~DcVDC%kmwU*Fv=h{=pQw%Po}@!| zdw~pFK)ScO-78%5cTG@ZL)v!|d5Bq^iPr5ka8G(XV8<=+Avp}yi7X%Vz(5B^u^7T# zjlC@t%a$Id)*B_HJ6PII%}UPQ0q($yi)Q9<@wH#iOxq5QPa|~_DllOFy(Be`v75$u`K?-sn zPVq@p34)m@9_?<@+UWE-85hlj>YSk83_?gpUgqSsX6;$J$i<0j?8b~4o2f@*<^x(i z6_ohHbLQoPt><`>RlczYYV~-fe4|M~>j(J;>7)3JF7+5BwMN;K^vm9-U*r)RH~c*b zsSJhsJBU5mb!8}&7P=7BIS*@hd-YG*tA*K05(be{KA;@y9oCw!TprDbwR>d=9=nVD zR`<+6-nm7SP%fGYwGh!9Sh5SC1}`NfuJp8a2e4(4rVgu`Qua$CHmBgrdgVvty<%R? zupJ8>d^X3m!=IpnAlXJ{DAeB$?ICHeUaleiBkBREpSqBjXcRQMp!mb3AXznuitIoy+A-6D7!oaKMZEVFl%%0x2R($b zClQo^bXpvf?8olekISNzeCs8%DStA2EJM_Aeh)jpJeqyV=}E9+$LiY7KIfMZ2YE1l zUA(E+{2me;kH$~WOzlZTWA}*0HUEp>W5G3l(*dk`3>_EmAzJaw0u-&`4n!jpsK(6& zsHh3Ck|!>pH-vOtyeAvU3{t?t0UO;3+3J7Zm6ZggTS}S`r65oQO+G+#`B2M+@+Vv4 ztrk^3l0R83y2GyJoBA_U2ZZ}!%^cYS<(&7aq5K{qC;qktFEhby3wD$IvXmrEc9Yhq zM0=2^dQe3vIdu1_EnU5H}ZhCDKMg0$g2w(QB(_K+n?KQ=MoC?O-INV zHFod?1O`DfRXlR0XCn>NN*nCdj~I}$x^tb7#rlAekKp3zW1&1jP=6cHdy-%3bvM)gHb? zr7_DuCf%IG$PN1c?MBDcw545I#0u3eH0HzyN)jI#`2Z!F5Fcr+ z>b9vbzoMs%_IivrO9xLZfTXbTElLtk8CZZGI>I$GZS}~OqttLI4GLLq?Ko4NqL zxqtf}zBc5U1!#p&QYbq}iQ7z3;Dwyb6AR!5Xy+9^WKo`3fL8cA3F#mK)g+N%5R&>v z`NnSIj4IiI+0b$qwr4|wubt`&tjs0+>i%B&t$IFBl9N=;4mPKqQF@97*UW5mtAeD( zYE_MD^z0d$ziUP{EJH>`As?VPk3IPdpi^#Rr&1>*bNo$;fi&eN<<_fYPXaHyN#mQ8 zgVJJ%<>=J-?jO5RInao28$%G|EIvJyaAiY!=;%nIBKtt5FT{>yBay>55^;L^Jcw&% z9)9JlzKXx4nBkWyb zesF+{xJ8j)6OJT3GLq>t_mS)^au_P68N(kBlrpuI(2benS|Pya_2@YNQsnax)(65!i40CcTZ-zbrwx9n;w z`37`@kBvR#eRTEaqzku@pQyVREU=`G*)W>I=Gv>1Y7xssS#j?BzxBe$f|-%f!*~&F z{WW)c41c%B@Nu?U&**Kh11EFxudrn)AM8=99ro}eKPn~iSV5VMvc&6yRaY{nXU>k? zpocPj%00p(dY++?o|F{BRx>9TaTrfj_EBK7;=XW$@&Ufp!Bv~ycs{idz2%V4FMwy4W^VznEM z=vj+rnOHz595E3!rm)Cij2C>S#!YdRsys;QkOQ4XZlk484^fcwPN5Hhd?>7wti~~rNnxF2HI6>3LC;#@ zn%Nv*%TZrNS&o#|_|RrJMl_SGHSIY$HNhLTdKf97qo7Qm#6Zqp;7tFaDkj80>(1 zAoRG|k;F8PzD#;34At+Ig(7u(PvVYUzA0j zLn%jJ$zlYgLwN}g8zI_fcxVJlD@iQn=wm4hq1d=+=3Y-c0o9&7@xn&PhHH0wa-kPk z97!_e@U2L$)mGk>B)YQm zX(-uYPvIYit!UiHHHNLI6P0gj*;77P33A6)jwEPu_y#9_cBq&NS(wX3M^p$D`%7kr zZx=&=;busAL0H`?@Y9imOAa6^xAlIZXb<@sH|lyQ(#n(Uq&UUGZ@oA|$fU_meRM}& zAx1`sQr^v!MM2wH1@A%WBMGb==s(h0VIdg(ND>}LpYT`+cE&}saCB2ugQrzeECJ-> zXIWP=LOu1FiEgK=D}SLEOTbbyq1~xMeiKa02qN#3>rDQPV)ufOw795#RP#h?)|<;DU{Mo3h0^)qQrF-WiPI6}arafdz-v8+@F zg+#>VzI`Q&`|9eqQXTY4A}mK={<2bLtQS3SUqgVZb7A_+OxZdH+x)ChlJ8qWGN`e$ zzi+`9yerhd&J-qTe2}b%T%x%3bI0*eS;*}~`LGjZJ@Ak};as77sH>HHFtGkWQ6S&I zK0c^k$>t|7urIfuB8dJK(l9i9nGZe3Xd+?r#{{n=6f+d+cldG9Y@*IX<(D<7Db5A6 z$&6sA^#e-c?xFH+wdO~SS=%p|tXQBQa89_Q=%SIFVeQDk#~dg|W#pI<3nNqlH1)NgLSLdu8qZjVrh zzu~LtSMrTQFH3E$HT)8Si~cWWQI<|9^q2RtB-irlb1e%!et?T+Dp~-jgH_dP6q9Nt zBxX_?cQx3ku^v5Z@Jdo7uRfx&5c7|VW}51FO~W!?FcdW2sETPejt4#{IZ`nj`Jkl& zKg97$f)p>`V#M7#(raFD(aZ?0o_hgsshfMyhMY2lGMbq;Y3}uGs>3EmJLq{rZ$Eh@n~J>pO+^-Zd;u5DG zjbnuxoVk;0_LW*nBCJ{#W7H3nvyw!}3&@IQ?{ma-TNBbYKF1hpQp4CquCPVz!G5t@n^tk5S;Umy-zH>MIK13U=$!Kvaw(lO29Ct1vGAbqoNzlTyabX`tF zxiKUWE)BII10VZ1m&{0qlmhsHUFs9l%1` zWFuY!nUu{!h{IA3jTzL11PiDL8gspH8rU*Q`KRWGFk+qZBCu}Cu)yfN@l;W_lOfT< z*dB#`VFV;P?A3A2Pv65SjVG~<7mnWBIj6%`Tr;(%`J^8_fRJL&8jL*Vs7SuXT#Kcf zew4S_LU?RUIUqw%R-vKToUAj7G>ZGWLD4)fo3Iy z0Io52J&{f~UrA2kMd$vP9Vt78Ej#*SwlD;tz+*1w%TwP*rZAtWacxJ&sxt|!7fuCs zgXPRUR$Sb9msi*V-&elm;q=R%q~^kj&eUJwnR;XK zzDz#%4PlCBGHGE6d6?^j7DSCYG|sxk<~W@%A7K3M3GFRbn-kjb8TNK$nml<1Hd@}o z1}9qZU&E3yR7HKkAM#ChKx<%A&7PReVw8Jf5Yi#-SSudXCM7bVMl#eg2cKZoSM<0@jKagA7{hqi)&_jIxp?2C~lyf zA|Lj?lla7&7?(?1UktvJ^u!z3K|ATx6AstREbt%xrwAy%?I*mg!`{iR5~nnta5{y? zH8a&LDC^A|3SV_}(O28I$Ok6F?+-a@Cr%vYBm1uR6z8ky|H4>yb7#>7CPEnm=?B!*iQ z=NzNC#Le%h0#1?y?>W6|XtgIBNz>MQ?}{G=b6w3tk>}c!wAO z&GES|tZ$G2K8}-+!rQ=tX2_K2L#Ch^avuYr26gX{1Gq|*zKT+!Xsd)5!Hw@Ev@o&& zCED7HVdg@u1*%`S$>K%HBIE*|SfD!W&x`N%k`Tkd0&hw~VXubP0_vsgS8ooba?Q-D zPb^SZiJ$jEA)jO#Mi$^8jkL8)cP`fAqDCORf$B(tLU5E1c6((^!rPwhc>_+6YwjS# zI|QTjB%sNUwmX1eB4gFXayAV(33vnj)`C=FP#Iy}%_*6;j+-PWJ4U*j!*U;rnU!+Z zKA`lIpThD^KUGgAW`k(_)6Pj6|D?PZ9+CL8Y~4S~(u-pfpO!;{qgAgiV{HPVPJQq2 zEWVZ5UESVPrG{+CaLBiNrx3Vk)$0$L@^BIic>~|LnUV5vh^|~&$mW=xMtoJ9XmHP* zcZgp+vHGt-A|z(bH_H0c0Dyq_oEuTFl&Er@q43wo(wcKheac)m z`RgiMPJAp!))SMm8-T;q^1;T0J^b=b^#l2UeZTTS<-B1-8h6-LgU9{01N|B#RjsmQ zP%)9@N(Lgyhm#FD1|rGtV&LHa`(OV-3Shgs$V$iYwVkPl4)@-mJ2iEug1PnApvxM)CKqmm)C9*i;1JXp^t-`2pU#-;HBZ|F&$mV|ju!R%?Y zgoj)U9riUxl!G6jt)>v|X{N`F!8+3#9P&M+b9+EJP@0y}kaua6CPL-(Dcb7^0hLCi z*`bt6Xba)8d4(K8V?l5fH<=VnAqjF-N_`cjQUaPFZ`7v9Pm&lT3s7W+bV6%^x(41X zK!Fod6i+Nr1L%ia7=4nY!^i>@lObWG9&bKc6SR>vZzXGF%Ix0JstqX1=YS!x(i~(D z(p2#ft5+2Ep{ET$wVHVze;;GYn)vf~0Jvr*^PU-?$6qcpe3Gp!J{7?*aN$g<1PJ4r znP#ps{}`hoi3`fGdeJT@hr=n24M%O5K1r_PLtMo*WM7=%n%R)g5F4oYTSku%<0eeF zd?p#w{ISL*B^-2?ibXXFbPzs$;a|)ovu#h`uQOHeG`u4vQH>9w8kbdlGQ>4A4ZR~7 zT2R!xp&Fkgs_`*tjU)Mz=aWP=K7?vqL-yGZ*UW}|IZ|ImnSDhyxE<0biE4~2Ksl(Y zFw<6@)1w+X^JSKFFHsFszNzj?UK)ZB?4=(&8s~}oExU01^43q1+879?SIvIvIrq#S zkCdes!hY(J`QMjGo}0usMq?+>O+pqUndDz#H;G5~Bm@q>JF};Yux@cB5e9-s9M+g= z%)Hz+W4h`G^KR=r@c{zzBUFPN+sldZPAyA6$$jUK1y$qe5=FX@P;cB%k_!2t3rAa7 zQlFPk643Y%pmAov-Ph~5=Gpx8Rh0SBb^<%q>z@#?XuPQ}ey1fWJcejw0@%1&)z|Bv z5H7hqw69{Z06?3aT8@6|`Nzz*jkbO9)cFH`GLzX`1MCq4^$3X@J0`*CO90`ph8Ba6 z&1m$;yIF45rW}(*Tt0-joIXsAKyb~>Cf5x1RV*`z-OYoOM3Q*<^u-f)hHGZp_GS=R zN|`1rG4JThCj?cR`7+*uQyP(IpL$J7+ZB4yjYX0Gb;Ykt4Jt1gyX`=0vMkonjeDp` zcblIi$?^dU(|Yeg`6q;Te2Hx2PAQQAvG@u;Jfm$VOCRrSCW{Jfbb<;GqdUg3+T~4zwGoA z0xpj%KrcJ})Jd3WtLeqSt$GIw-!Fcu$37qQNh#lGd84M1Z$Kx|N)d7@%|O64+{{ju zNs_1e3}jOLCaIT^ObWWNkHw?0|CW>b7jI)Fahid$gy?*d(91}sKUVvM{VN_BfUuuW zc%J)ACOcHQMVLj#6~~~)TK|+xW*pAPUbOx(Am?L1&c|Mt0%Moj3MZ!J1NJTD;8_ls z-&`*z3A&F3@GaXaG<5I{NfLhf5d3l$UPPCCLK38zC7iRjW_?pR9#SyZEcI2CS<++t zH<#l{7G`7tS{*|$q_sfz9+&WqPYA_4u>i96n=?uhjTu;gz>rS}hBOucN74GghxT_v zDCU6$6w~-n557+ljTu>h@=86XoaL3)0(Gn6W&v7MLPq9^1yCG+2z~t|dz6eUz%g4Y zvzY~YHHY;H_!xcjL4TH#CUG;iew3M#5B1r2`4e!W^1(KI?j25$8fW_OjPUJ-f#)AZ zhee%Qc>00||Kjm4Fq)$zNIBH5g3AXT%-i0Q@z(cw$e;9v4`S0Wgbh8CNhN#|W*Nw&S6kwm*>s(~1U?{hfa$?_xUjPu^gR>3l-aq_GyCZyVwUiui$R_~>Z=u+iLViKx31vj%r z_cS51LMTv!FO7bI7NaC-Gm=S5M#ut?)-Av^`Uy%-A==P{1~oc4E8Z_9r?4qWBlGf% z^#fMH?*WCdOd}24MVk<0bs?c;!I;HEE7T+3=dk(JiJuS^x>7=4Nl6LHh{($>DJDW* zrq#DwJ}tj|1^G>)G9R$9cgs?wg|tv?1SlqNC*xNse#3?%4~^jC_M2=m@}(9d&J%o8 z;i8#)Juw36p5|4G-{dQ4K7CJHesRPWcbVyH%Y*KP)*NnJ6a2mu04LXE6g8$y{-kCr zAF5}1=l&*N@baY>yj)X2lp-#g4ax07f35e4>_S5uzcK$!(mAIzUXb`jli!e2U}ygJ zk5=XNiY~3;qS>HNzZ)p|dxc`<)qqr$;QEKIKUq;f=^=KBt7$`o+notAuvfMSs@_xS5bwMY0jH;aXS4o99wv&u?V}X8JZU zMvYLM5qvTJ4Z)u$o`8LdWu;BmZ<2!#HA$dX) zg&7%vUW{*@iI5vneAc?3<)shMH1FtcPoVd&(AKx4z-g{G;LjmX|BZyM@>X zLNMi#XnA9iUvQHI4O!M`8p%56Ug>}Scg>>=|M}nj$A2$Fkvjip{n>wb3NDc}#yPj_MkhSjmI*G#iw*T=U6zhO1=)ro z6{^VRD!99!QeK;-F}Wl-Ne+E|cNnwlKYlpiOEo{!)!zmIj=^mZ_!u8H$?iX2lU6K$ zX-5T55)}FZH^KsXiR4{`5S6;(tFNIQoX{44Gd_!p0`!p&b|Zpz zB(l=MN6H5+Mbu{U&AnsIH>7ErIRy)Ln^TJGkR!t>%0>$W2H|Ha z$)0>s4YyXM$8&MbERek;q0TM_Sih*SNxc#$Gf|D7n>2PL-i1s8GG9*wT)B&$c*Qj{ zJugS?c09Cj!8)dn##WjLgh5A`;;xUeq4(E2YIx!bQCIwRLR_R~3@D;xBh*+B5V z0l83D^?%62>p*+2IMct*#9SdO7oYFZkrBgaIztjf@_!KH@&P;Js#+5%(OoQh4U3Q(fOYwl|AQcu4|Vz| z_Ug{>OxM$&{GRm{b^eiEQ907Dv8IP+oJ@BMBr>D(Otq%zR|2`kW#pS^hrVk$-4|CS zcrHS$<+5D0|1A>TG9f=uW_>mft>vn_++@0BzWvI9EONc(FOEe2_5;0UrsoxjV0Ky+ z#nqK#Is8txd>hTsBMbPaiN&f>ely?E8LE+}XY*zcaVMP3Q{3cQ!iWeB$i}vm^ z>PZE44ksDO^bg-|zj8FmP$tDu4kj7Obo<$&=O2k9|Jbd_jLMov3GYL3lw(MSW2ZRE zok|X6QXJJI?pYD>Z0rZI=)+JZ#ZeAe7|HZcTyDQYy5NyL{j-iD^N*}Y zUy7p~tS}rqtw$kP@M!G6Wyj*{cPhmI$$Odpg8U^X&9MqY1CW!}gRZ|FO#aC`8T%hu zlzt0UAP-;h4R?6-{b;`E3AF83jwKk`Rh|>`8#XzZU@Vl@%b$Rcl@B<_kq`C0r+j0Q z6$+GZuq7xTOfuT6$;AoR_)Ihr$zWW}oF zgGtt&F7k~@)&?~4jY-x9H1dr}RyISN5!8=-C@J)>ANe0S;Feu%c^Fgv^G~pdF_WbQ zQ1aeQwHlgzBJAVa-}bOk>SH&mChvcQ^vJpYG2ll0ql03s;&3zXZSsO|Z*#fu;;}ms zS|)HNRPX;y!?JgTem0Z{qB-gsQCn`P5{>Pm{Ce50PDMN4^bFwkE5}=iM%8EULTRzi zArhiQ_jr6+D5r*}!&i>#D=9fj4~ylIMcR=GQHj=p21ej?T`qd!Ksrrz14$dHm`TK^ zaI8)0hGno5pth@D$;W>hm5hi%PCLn`A`aJ4h=}tummJHN0JiV zJ9TZRNP%g}wu|QZvR$2lyX~kZ%YhZ!FW?z>p>*dE9-TK1Zb#_6<+%9g66KepGXDz5 zzLFA6(XJ_VwHTp(l~T6O#WzEZx+ z!5O00Kqw`punEaSO)1>Nli!CzDcr-xBM*gAaOKd9u}vwsa{Wt&Lj6;N+pl^IK6BP* z!}mCt2#so*heGKtI!9BChfmHQq7M%>Wj~Edr-wq>PownzP^kCQa`QW{9Ucnxep+rJ z{)A8uCT((y{%3^x`cdxC|BO)Yr*en>XM}n`UFtdf-w)HB{4_-U+`?LKGuzd_EUb1P zW-Q$=eGEggKwT_lB~$oDKHzRsKG=P%QaJLB-N!19Bj1>0ZM7ob)N=SooIxeS)#MHt z?omIeWK2W-29o7ze0dm8HhbhQ9}nbt*jNUV%vrX2bLmnnQrE|yjgO8)lDA(E>WH=a zDpf%pjjsyic0F)7D-6qyO!K%!!7rBGCmLy&6NuxSAX_|rp_FKn42#?&cZCufgo|cD zar*B-NqH}gHj|fUXvwA_i}B0|gdNF!X3ny{)ri|a@D2H808tKmVgzi=$m70jgj`4r zjJzD2$)d#(w^ygHmfKbMWC>>YMfsqq1mmxN>O@BI_nCwAf)4RiGe`AoHp$~y>+gas z1S2g;q-N>!D$C*1y4*blqi%e+&(tgj1#rD+X3ERW`bx?yT5}lc`!8STmiD0$s0ew8 z)hsqm)y)j6k=w+Qe#Fi0Sk02eYL@^XPv#dep73hvXa@&lO2gJXv`#kvLn&O zjzkgW<)7P;=we5rrRflsMmrKMEr{@q9f?XqBKyXwG(8esNU#K0w zD4Dddt={cTn9e7^<4=mlXqD~OgXkbA#;~JCs7c3VOUN~yH(^%Ev(5`)QgTa{b2XeR z-|B%6C7O_v($d>Bl#>l8@|Qc=KueOD!*-2mC*Y+Aj(7_d)gi-l*{*u?eVCN`lBiMX z$Rirvh0noYeqkWN!A zsBykQrPrt0a>II$E<$a_4KNsE5SXFQWh`_4&_WMEF;4|yxAYN|LH*pr>JMAj_c zpN*ZpGg+7p^d$F8!X+bnl7EI6$fL3QUMX9tdj5bt>2!QaG9`nt(+T#HYZD@wy_=1F za}*hS@+NN}ll-$@GxJZke%9SVUF6RNqpY7+&l)bb7%o?eRTQ>{%gO$VePhQAhEOf~ z)*=bSY78lzYDAVIT3=rzAFNU~{AK}>B-bc0Bp*z&_C!(3N!P)j((3a^_NZ3>CN~*D z(z4Y3j!Xf~36YSNm4VOp%RL*Z!Hm$7>%I`*IqNB(>Vx1&z1~Pxko&g_+ zE=lTUAb58#y4jW_bTg7k)nAgi8OfyTFNxfYWRjC6iJOs3a?&JlGm=S8n&fRpGTBL^ z6!j?R`4BwUxI_|NH#zxs&)b@WZALQvVzMS#n}JL^R$r5-%}Az?qcus|jAZ&aT9cs7 zNT!dYHObkGWcoN-!+t1_{F4rj*O2*mCez2!n(VYP8oMu`)+|iYk0UyYUX$HhMtV{l zW%-o8p45k8%`zkdnG{DM?eS>d>6m!UVkvz+f6Io>i;$`{*=l7lQ7>}Ra0~yL0mwj$?6V++{zmOxELELd-J+&U~Hu9tLrz$MxuHxy9LHZF2+VK z#zrp2MlQxiF2+VK#zvyb5IHCf>IdDlz#?3~sntrkMs>y-RsW>hAy^ISH+n0Nyj#9e zW==ksWNSi%TvD$w$vC1b|H>rWF&bRCTx___s)UeyV;e0$a?B`uEV5xjZ*LbXCyxs4 z2DKi$oww#?-e3%hvL$>7sJrWd$AHRi&N<ysx{Dns<zs?D?#$*bL$=u>}w0y8hhHDigw6m?c%yg#I z>U%<$wvw79v~AyMD{qxGi8-wR0a_0rd;-_Zw01oOS3GrH%)LPwa)Tr=bxPwn{ZJK@ zM4MIs4!0rGdKEHQ=U(za#osb|?A%xn4sL@{{ zRT&)(j`EFF1qS`B#`>u7jhH&oglh;Ukd=e6GZ-PnZe8qsQ+IA zi&|g0vj}-BjiqZ?st2ugA$5p%g2+FuE@#%ksv+N2McLbmF*0LS!Od9x9_(6=8kv;uLsp8kZr%wpRGaSElg!i#^y(Jcw4@}tvC|Z#m;xtt zWk>m@q_f%7H9?K;Fs+92*c=Hh74l4|`Tps&stEah61Q4$?tWK|l30?CT5)uL7fM+y zq_}jvreT>1pa9-#Ny=(CUP?nrC~5_da33$ldq^;yH=KYO?&2u8lkn0y5=zlsFPizF z-fy2HF6YdvF&8VAdCHtg9_kd#IY^#qqe+j_@nywEoH`b*k2#vPzX`T1lrKW$qtS6Bl(NRt4YkvGYJl5@+KT-cHf0oxjhZ7< zQXUF{pEJPwsE<4&;PXY2$XQ21DQkoPQP(T2!OVI`an|Hs>N!VEt|ZuT4f&qSl-4#3lw5>^6=oH+VlJZb>-Km<$lvl-47Dv0S zzye%~7~BKP2iyZoYQ?Ru<=B#Jb-PqkMft{727|faF6Ayxx6b9m{m!N8GSm5={`KGf z>;L#K|L5QS_kV-(c2C5XkbxMOsnuN>h^dX3mX3wQEXqqggSDke4cKSBtuWLlNnRNm z2=#lS*B0~!ZKzgGl1lPMQ~Bu|`X-Nk`COC4isVJkeW8>OL;mU75$h`{^QY%n@{BX( z?|S{rL9`6V;hEkm+m85ZtweMfEIGSD;BIU%3bJcb8qVhK&O{4C$U%8$!m(emfEcre zF6ozC2TdBsnLHopgvudF;Orbha){G)Ch9eXi)J%^Ia6QB-y0PBt8{YlQ!d>@KHG&>lZq!~<8oj3U9U6htO0?ymVTwa)3sYNZ>{wbI z<(s2{fJ3nh4%}=9Xt^Qzn$BTl<5iv=CxaX9N$Fln7R6VA<$_MS0XXr>~i`F#;jM zP+~Soa9%k9#^6hNr_(PpWzA;PHszZd;oep8PiH^DnbL3Ysg0Z~;IEIR(ea1uacXF- z)=C;%y`@sKhcH)r2vavN%b%>`L-i=%7_Ndalz*=Fp>ZdnDS7y%>tEF6O<;_i6O4pX z8cz~aLrr~2j*Dg!bsmMt13J#RjDo>Xi*2>(Oz-vR^iZxY{4@zk$Vz~p{v^-}71CfD zG}pK`p?iv8=gAoL%s_e;A{>P`PxTV93N+=xW;0sns-YA zEn6RGk>^=y7NY_9Diyd#z0ZU;l+cq1%VyHrP@@zRo|reYW`%wul)(F~UNp<;mzVXG zlu*-JN*)HLH7Fz?8h!inx%u0c#6LFc&(a!!;y2_}o)`h8;qqF^2z5|1`)X96XAo`) z)m_E)txFK5sf33%2a*ppjQF=oK`{HR#^6^qAwgE}x_mf{UVhItC%e`#Ktfa)4-iyc+^EBm2WMb>f zm#6N@vc;7XegyX7W(4Ynw}rsS6C+rRaiU3*9wQ@AqrEN3Xl!<#z%wT;3dpiimH5O6 zbulh&!Ppa$8#e<_cvHA0!Ho^*$K4aCPzXVl2S(6S4e69YMhFjon(!SNfxPmkREwr zgnCycMxf`_wj}K`Gy;Whb(h(sX;}w$SIatk2xhZJFPm*OZrYhn)_KIVe6Zae+iKjb z*N$dcDF*dOS3Y3q@&PNPe6W9R=hy0t@~`Y5d&A6>Z|=2Z5{ag*2gH(J_mY^*29^bZ zgUY9v(08!FC9@gucWZ{-l#LPKF{E8`=`?9&slT-Ioah!JJnA1n2-H7};Msr?(8?Cl zF-C}NfLB`EQQl25ECZ308bgAm$qF7hxok*@v0gHp;VUQf$1G*D;wPLIlX%Qv_>>fr zO=>nkAnhbkN(||kC&Ndr$O$oo3EHW0r(M@nQ94XQB%6mwE|CO1;+nrX{rbf4!Uy0< zq+~Gv3x`y+52~QqX4qOiKGUaY#7`}O8z!{blhNublDL3d$Oi*EHh>+JCqlC2%oCnz zadSXXojhCK1~TcMBE&fw_w)FH)04ulUh~XX`YKAQ(C5S#zN4rN$xL#qt=rml+R_b0 z2nuz5#U63r>=E}3mMIQV!`%D99yZXq{Ggt(x2cHO%sq>^0A;wz^f_Zswz=5>L$orf z!6UAj&DNDO`zrpHEjNTBzx{B}@-2Pw)H-sj*UYr-`2l8DwgNFJ^@E;eLrG#Rk#45H zAr>uFQ7s&`5HbE$tSH8hIDchh{HtR!oW*D#Fo^1ZJd;H?c3Doj)Pd5J<$@H0aPqH#2 znZ78)HM3bi&+>NH_%#IA%tnTi-3?2| zP$SRXOW?0FDSDK@gXBWMspX4NYOO`ymV|vy!F+eJ`W0voLyS(uo0I&}FZk+pPxdn! z$)pvd5-c;@lGg1x{@^F5h3B4xYIYzh?V>~|C$5>P&582VQ*KtFk3U-6L*k^724v=@ zp)d3Hkoqy#KNkr(^Q#B8-u06mhjwrVk|mZ)33|})(#qN zRPZ;<{yD82mr`)pN~OvRR7UY%*QSK~0Q|U_m2zE3tGLaR-B6Wkhq_Rb9der|r!+PL z@tAuOD%m|$;%1$a$8)A+prXu_^?{)Mc3eK2AoHg)ddj3@+gd)@dWb>r)R%uTlibAm zwWf&NTFLmCN>U#?dR(-QL=YmbnQ7=9$*`B=NPs#>y`u0;R5MtU#*Vc6yYfA3QqszF zXT+By?Ua(j6aDiZWACe290~R2PE7iqq*?~ziP_sjzN4`Kh=bdtQ}qziEe|XJIOS)j zM)U%Fv$W-9gn*WtaqAcJMMc^HPclVV|4++l~`x zvTO;mnH3t#dRpdkePYM<5SHm_R)gJZmPEhL8#WXK*cFx}VjtjOGGWRh$%pzUo~Pp0 z8EbS4P$JXz5XJFfU>r^f1E2ujBq4j!PFAgkS~sEw$$JR(=wty^&>)xN3(wg{UC#|e_c*3WAu!_+hU&8iExduB5_Ah8fAE+N>TOJhrItHFeYU=0vpEg*?!;%?zAH{mA;s>_A$? z!rG*vyUlznW}9v1uvtvwd3`X1UN*cxBt!OVSTcs16}%URWS4C-gA6n4*g+8#Wp7Jn zDih3A)|+k=!`DpFhHbmeJop8=xeNQdv@_%$>T@wd>tH?on)x$necNX4t4%cJo&<1q zZ~|?}P@`X5GgEtDin1~QKkyEg8YbN{px7z-U5v_+7)ZJnay~tn$-S4j>=@?mW(?u?;(`X zm=)~F&8&125P~+oQUR+|GSvoU=-4CVT3YqG(9(y}Q%H@pGOI7%hD^yLBxbI=G#l`3 zrj+a8w#a+PSgAi5TUE$wI75KS+*a>=;I_KQirJFVSxr_xR7dvydn8{Pb=VC82Oc#!K9Y>b z(PuoqzNp1Dvnl-#|5N;|j8PL!_2BBw6kx?TGcg=sr?h6cK2zhGnas{C!R~c(>f9B@ z>%7tAgl$k7ZGnZ{;>{=SBLrJ++6rmkCaOINBJNk(lhqV4cg~f3fZ{y%GLJK>wqw8D zkd)={>nq+PL^oV2JaC&@*VF?ysNRu6o}yK+y9xI7>)(+CD2_fr!CjYe(aetLqI!;) zon7*xzDcKPe|LoF!y_9kzbJRt`}~={jZm-@tl7o1OhATiM00{6KYOXBYhS zv9xAi=>KQ!U6!rsar4Z%u43Im?L22jC_IofkX%;F{kLapW~;(st3z^h$OGSfza)6T zo0&`|H#qpBR;`^s77_$_03U+!NX;yVOEBMxl_2L>33855WmwF)iFlloMb>+cWViH9 z-Zp;8uHHNR@@q|TGY-szf`}Mc@!v{v3Lj(7u)^_#NJ}#geXwY$B1eBe$S56IBR5J*LQnbA(pYU}(S=6D z7_Q0mX6;f%SlHnUBDtq>Zt&zwX_mP}uE@_aBefzr6{eeE9`3thZ|l=^voRsR2!3;J zJnAH?0Xe0-f>mHOOj(V53I zRZ=~-j`KH~uQpzsvak!j?u7W)W)Q>`YX^UY>b+Wu}GeY)N`h3 zQBSWlbL>;M`VzNT@-`1VKjIdPkTBFDRb(X|nOlU+I9rcO`Y(-yNl7M60IP(?xs@+7 zFz2&$2yLmd6(^ZOd|ck0rY2Q7B}eGJDbZ2_Q+!53WS7QTEG4VbG^YwIoGlQtbKLXO z0h^^-gXN6{q(9+O@Jp5cIB9!t;E^J|5d&ESBsu#4ourXxou z@sN@QXmV3UCe9YP?cygIDXZ02-dG^GI zEu$jG^2}4TzOjI}?q}h}b9JNtodtBvu8l0o68Abd3aH|-JY%zf==H~k3m(fp$CKn& z7Fc!6u8nBPN@z)n0y>={&phc__W{xCkJDkIwGkjG^n_G0Se|*(_I7G6kg=Ov%Ptf? z#EE#=e8M;4$M_)mF!b-TiG>fcWrYv%KaZPraeEAZivM{m%(TSqJLwPITwgjR_d&)^ ze27`1L=cG6eo)pg{Ag%I_l?(?CY^o(@@Nip0Qf;pd&C!%j+X`gIuYeoK+!z1F4BV6 zMucW1geJSL?h@shr?*!*sWlfMfhD~KR8DGbthkb-o%$9%Z;@x7)RP3_ngO3LR11D2 z8qqmYdGJZ#sY}TlQjqICO}(<@5L={$G@NYtMR%7|&2TX}Anray=Z=SDmrxQux}kGr z{|q^Z-ynXk&Kl`~Qw!+z(^|!2*kC1@Gz$6OebO^+lCH7PjI-DpHo);gx}MuJ2!36q z$86ptT^k{tHQqFHGLl{p$}>+d6x=kw4c_7GP4cc!Qo=6j8j&tBiXa3Kc;gVx#hxUd z8_##w+ITL%NoU8_Dv50uP(dQ2p_-iBd zv&PaVr?=Lt)V0br^dE}WVca32b z+|>JjtoE{sJzR5L1ECQfS?}QyI*cRFJZY(BsnyF9*>=8hFRDeSSbkiGd>y={eST!`4m>U zbHxw%m!Ot%y>^4NdxV1y8m(1^LpxF|BIEj{3&64Z`9h0&ejq(}_*7JWt>P9Z0}8xw zk*V_rYZWxfjuc<`>PV77-6?OdHu5Ixy?8o#v^G{zSq0X(Sb*kLRo3K%1;V6or@X=H zH?!?NK%Ge=YqH+6CUgcxo_W&qjRj<)ymM#Lh@KRDfR3cBjp)gGkDeSf;`?W;7LY#h zpc-duV|ka71vqA1U-6`E=%QnhCOAWiKg{B;js#UM`IUCaw`|3n8>R{zYC>2wb-D2mv4k&)_W84DGPb%N#79Qkty>5F7EGKRo3MAAbm1Ec-L@$ ziu1H<;gz)tpPekPr)Tn3Iy(GcpI(8bEpZJcE9sanjD;p-t?T-#czz-*WAKekMDZbJ zZ{$rl+tf(ctitGA-HJwyDhk8zSQJW~dzD(sDVYc?d7DKVW0iUvx5p%<)%9DQQZkJQ z&Khg5aECGc(9*X`Aq8*FuY)^YF7y2=c@=Xq0;;%P8y#0*t?$U zmU{3iaP*v%Dg6e`SbeIyL2-d_bhA6_3_monY-Ep;HQeARxpy7@jabe~l~d9{HvG`o zP~}}t@h1Bsm-i;ndac4fd3d~65?&VeT?W35V{K%9N=6{^S{{08{1{DPy5YkhZWYPf zx_b~P{ckyYwPPq<{aN+w*gVWoYlin^Se|9)yf(D~X(xvW&LBs=Or zoj?`zQ9gC6Bz!7t&kcNQ$6BRbUK)Wq6n`%6$)`?2KDyVX{^ld_Ypu0iVDy5@i zEEafi{kH7tl76n&Xz_$w_Z7}UvOOCOT=1EmBC%adCWgfT@V_^?_U=(|8 z{U2+OhVfbgiSz+ORE#}EDzaQeT!$JCxSlZVDyvdQv(%T zf1){nf9OeQ=&mE{=%*|ZJy`>nhiHxatFhuwh!NM3`Ch_(@DB5tq%|?o2^Mu9dYO06*t&tNc3e_RLH7@*%LUo95jipvf zLaD<4R)rtlwLbCKTO;{V)Kmx1)`)%-h3Wxx^OS^JK#FDyJQ6zVgT+MYwrXHao@yFBQQ4j z=8`ZJVNXBG&8e4y;jNU(<*)ChafUn|!dv4d*sGM6#uP}heeOe?FGU(S^jrS`GrifPem0e>0nPOveBf+vs36`r+n#olmp6pZc zl{w&@Pf3#vD^XWl<39FwFMpsLP_`;Ja4c6w5}@TCK(M#t32NxeK&=JIPKYl!vn04V5a!SFW@r~dX?nB@c z#LRAqDX&U{XCwVb!-e>y4(&!RX4AznBFymT59KDSRE+L;1R?QTbDI>0(AqUpFk6)7 zVmfQ5j|a*lFB(tKq%gyee9Ly_Tedn_5$aBC5kz3^XiRM6NeUt<5E^Ncf=C)#8gY(I z;~cqJXsTL;IdZt(n-Lv%C=)^@CpN#3d1~)d4|^}22AM{rVUs14j9mHkX%1M$J6^ng zSfFvLppoe)v_4h5+ZrK^P4f-;{RuyiXP%nrjR9n_J#e0&3Szu+fPrGFk-!MmThAUq zh2P{Es|CWI8=d6Y8n>EDK0xtW~BTh$!6}5tNbzIAm*E zaN(5o7T5lM8X*3Ukv(#CTj1*OP0UZn+)L;<@UVbT?nB7EZ1HS%EDVf4#d(F88V?KV zLX(FoK@uyrZ9+4gU6v}gZH;2wD1ohta-3zV4RU1x8V0M|uQ^=rRdg1RaAihdYou99K0uvImFqZJ zK(>d^{?EJc)sizWED&~|xnkSah_)0gKo#4z#)2!GY=>VgKm%bFX?bG-S!GSU$ZF(T zN*17bYnA9Y`+&+j<|vqGAguB%Z!8cts3(-mASZTH*1 zPmK4k`VbF@3 zdXeu869zZsijyz_nD9-kaI;0;Ncwh{+=;x=7AxFrkvH06g_{t72#f$$;Y0X!@eLO< z5o{1!QEGXwVl#2Vx64gL7e}Y=qmh>>$8q1SeP>?eaHx$)qlN_Jv$8IPxh6_^&hH*zk!=3MerV4;q+S~x`|KKICc zV8=z2`9mc>_eRVmN#j16HqGUkr&f}*^{&~5@ZQi-*ao(tTd+O}JPl5He;BXqJ4*G+ z(sb{o5w{RF%NKDQ#^$n{LwYQgiMTU^JKO}E$l)QNlIJZ&xN`aQ@KCa=WVFFMWz;Z-=a@H&K|G}{GtUqZD=1~o_UfP z+%&%p-r?*`@~%%(0<^G4mdj;lg2A0pZXCk7&y&RSyM}{OCx@W1uZo;JG7Cxf(@)S) z*oeyPLbIHkh;RUT<`<@LeVr6=QGvfVqA$BfUvgJWMIiSo4038L={7EJP2GEyTFDcD zdllhep;uaIt-Ci8ASDavwXQt#)J8Fk)OkK>3fC#bZd6p`DP@)0INR0_>lfQn&se2a z^w1e;5a&*URcLo=WL5Skje}^VPPTE+b(gv=msh6PuQDpioo=&naHlYmt(5JSH+s?Z z0uP1pAc87;Kx!b|PyJ}bZ{(j+2jv6bzXY|E>$RWsJUNnpDHp3!cUMJev?E21#yiqw z2&u9pXZ0?lr86y|8G9AV2~ip05kD%)dpl?MCZrarvL0!D7mGTupA(6(H{vLJL8eZ= z?~TYvNhWp0jl{^ViIF^HY}5t42Sy4iA|69!46dZNH!fld;;E9}UWF`9&UsHpY}6z9 zXP)9Q_el2*?=0Y5^s{k~)JU0>EI^U&Rd~`itZ;YXxk5J=5gT!JH`GZ59``{qaQF~5 z;^Hly_~x=Q-Ro=KfPL(`I!1Ors=K%Q#qiV1oSL&BQ}3kh{eyz!-|ZDs7SmKG}0T$KUWny-6bwvzLTYR5x-f zMWGbdjo`|D53USUpGzKkYRv3>_iv5}3|Ew#>T~Ul=t{{51jz1Dpm53 z)d(R12P)INH_|IbBhcjAx5SgawyM93Z<}aWJC_R zKI`1ig;{q=NJ>sVRn=l4SoB40TEL2{AcK;5) zU;bpS6oEpFTwHLX{-m+=%25)krwK=6eUze53hPFA!VAZ!JSQPEWVsFneFX#|cjXQ?MoxSa?HZG&zoR5rqgI1z{y za>Q|6HzdyEKKO|MKEzTh@=Dw>Rq>3}F-eJ&OUFcv@X<(+93`PNiZ_BDMWNJ(RO?cl znm2CypJI}#K^@hd{_KwTZ;p;B0C%X1MXRVP>v7iCd&s4^h|WD4sgFark*iP|YOAEn z3nRn|B@0i^tMtc9BTygWsez}MJP8$icPAQpa=;xC{%0dn1-| zl!Vf_-dK#KB$P10qspe7n)e?s)&^=$HZoaH<+~G}13cBTyew#Y)ab zxbN*&8hoov%^M?xm|Q7yel(&rMI&$@;@0-fF&QhR9Kt=hFpCobaTReS#vj6h*< zC<3csONzjFLg6$vt~81_vNuObD1~(+B2yGfVO@n(PR@7FR}2J+9o7B+?0olcjtC4i zz_8Itn4=McDH&nY%*s*aOU_2PkHC$FTE94W^5{242obpPbiI+WDH?%#j4EPsHiFN_ zU8V+fLF!TEYu*?^M%Q7ZYFkGmW>Yi*$JnpBp?Hkwh*f|N!NJh`NW8cY;h5ARi$?cN zIDaBWauW(E>p&e-eMdiRsUP<>WQL8xy^6-18`*cKmqsQu?Pw%qN}AG*s7GT_mP0O@ zxoS#7ZI!#p?s#ubbW8z>7I&>x~3X z(Fin{RtdG+>ALVp2&zc8h?}}F6IXE`Vg!oa+&4Z+q$5z0q)+|$e}cVTGS&Ch5h4v$ z!UNigKSzB6NZ_^)!!u!91-~vSbbOFZ9zMu=1|K5f9l9}ma|6CLuI?0kkF9E1m!zz) zw!zVe;vDx!tcRWY+A1xiK>Q;zE&%aG8+{n^XvBJww9_PRr@pcZa|nrl2nZz&AKu(4 z>E{S!#a7}gA3TFN?<|@+s;1ewE2q`iNzI+#w5jL)U+Vlly=D*MIsi z|L1@G<@2Y1`kViV0vP}FU;igc3SK5fd>-(Ff+7?+)dD|%^Z)+afBTpJ`+xu2zyBq4E4O}* zE+$?g6tw>ghhFpGx7{M*wPo@A?Fr*i}3$>*t*8Nz_@t+cp}1#_Z|%8Q15v2=&v;vr~>gs`G)+TKL5Id46T? z%)UXfKR)A+P8@{ipY-)jjpssw1LGe4kIa(sLFNJYaGoWH|Kdq9nHQslZY=*<+qDgl znSTUXxY||qzu}=L6}2--c@sCr;Xm}&ApM-iPon5;A)ye5YF&nh8Y4)!n(Ire9vwn! zgL*9fkd^d}F7+<%Yd&1MYntOgP-Cc-tV8{O8z}=N?n6!2sSOW3wPOyodnFMbasv@U zP48jOKYj`KB>J6;Xe1fG<^1SLXo%m)Vo6g<<_Z6`k2B}cF`}i$iu=Y}3m;_Vsb+Eb z%DMm3kA~bhp7g(T@kos+PG9zoumH`?oFSj3ACM4m|N_qhw0*M_tV~JoM;To>RkvxdH|L zkME70t44R0QY`M9I6%o_mb|!%^*%;@oi2pdrgzzk z@0COYhK$ij*TLcIT7aDO_4$TNDC_HWA+#|xq_)XbC{2H=Sj`(FIK?pip}M)yw{c*) zH}a?nVF-1Wdh!HGPoBIufLQp?WA7aJ0(=vDXUV&e7gv)$J{gJrJT#vl03_HEAM!pV zuno0=i2Gr6q?t?`YBT@bqc-D66M)yKO-V@vM?h`HQG<~9x)yim;3yb@dWg1UER+ay zZl24JxYKJ|6HgQJcGjxNLicA>Y5zX|Y%(Z>SCNqu$C|ppS>_ z7U7Yn_X%E`Uk3k;Z(x#A8x$lRj{j88P6K2V^<-~w-NBPy=T{Aa{fLmffpQvECg>>{ zo>k{xps~CS5So7o5K2nZI;DyS73|=0F@go@cB*nVCuss=oE?a!8f|Hbq%Ykp*Sk%y46e*((TLSX zEEFw3kyXV$PLUPK4<4g<4PHexURWSh;TSdSJpZ(jFGUMb%vMXgoGoxaE2JT-O2E9a zKv)>^;<&B4P0<1rvuzb!lLLBJnW(`j*^}+⁢Sg%8pTx(_j57-|IJo0u;QHG)DY{NWys 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